0

Я создал проект в Android Studio с помощью Activity Drawer Activity, и я его успешно создал, Навигационный ящик я создал 3 раздела. В 1-ом разделе я поставил Button и хочу установить методOnClickListener на этой кнопке, которая привела начать новую активность (напр., «xyz.class») Я использовал кодОткрытая активность при нажатии кнопки в NavigationDrawer

startActivity(new Intent(this,xyz.class));

, но «это» ключевое слово не работает и дает мне ошибку. Итак, я изменил код как

Context c; startActivity(new Intent(c,xyz.class));

который дает NullPointerException,

Мой Раздел1 код

import android.app.Fragment; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.widget.DrawerLayout; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 
import com.example.pratik.crm50.R; 
import com.gc.materialdesign.views.ButtonFloat; 
public class Dashboard extends Fragment implements View.OnClickListener { 
    View rootView; 
    Context c; 
    private ButtonFloat float_btn; 
    private Button but; 
    private Button btn; 
    Context c; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
     View v; 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
      v = inflater.inflate(R.layout.dashboard_layout,container, false); 
     } else { 
      v = super.onCreateView(inflater,container, savedInstanceState); 
     } 
     View vv=v.findViewById(R.id.button_simple); 
     vv.setOnClickListener(this); 
     return v; 
    } 
    @Override 
    public void onClick(View v) { 
     // Toast.makeText(c,"Float Button",Toast.LENGTH_SHORT).show(); 
     Log.e("ssas","sasafa"); 
     //startActivity(new Intent(c,xyz.class)); 
    } 

}

и я могу получить успешно войти Log.e("ssas","sasafa") на приведенный выше код , Итак, как это сделать?

+0

Зачем определять контекст c два раза? –

+0

use new Intent (getActivity(), xyz.class) –

ответ

1

Фрагмент не распространяется Context, а конструктор Intent ожидает, что первый параметр будет именно таким.

Переменная Context c избыточна, так как Fragment сохраняет родительскую активность по умолчанию.

Вы должны использовать активность (класс, расширяющий Context), что фрагмент присоединен к:

startActivity(new Intent(getActivity(), xyz.class)); 
+0

Ты отличный человек, спасибо, он работает! – user3340034

1

Вы получаете NullPointerException, потому что you're никогда не assining значения для Context c. Так же как и пользователь3249477, используйте метод getActivity(), чтобы присвоить значение c как c=getActivity(); Или позвоните ему прямо во время начала намерения. Это будет выглядеть так: startActivity(new Intent(getActivity(),xyz.class));

Смежные вопросы