Java 在NavigationDrawer中单击按钮打开活动

Java 在NavigationDrawer中单击按钮打开活动,java,android,android-intent,android-fragments,android-studio,Java,Android,Android Intent,Android Fragments,Android Studio,我已经在Android Studio中创建了带有导航抽屉活动的项目,并且我已经成功地创建了它,在导航抽屉活动中我创建了3个部分,在第一部分我放置了按钮,我想在该按钮上设置ClickListener方法,这将导致启动新活动(例如“xyz.class”),我使用了代码 startActivity(新意图(这个,xyz.class)) 但是“this”关键字不起作用,给了我一个错误。 所以,我改变了代码,就像 Context c; startActivity(新意图(c,xyz.class)) 这会产

我已经在Android Studio中创建了带有导航抽屉活动的项目,并且我已经成功地创建了它,在导航抽屉活动中我创建了3个部分,在第一部分我放置了按钮,我想在该按钮上设置ClickListener方法,这将导致启动新活动(例如“xyz.class”),我使用了代码

startActivity(新意图(这个,xyz.class))

但是“this”关键字不起作用,给了我一个错误。 所以,我改变了代码,就像

Context c;
startActivity(新意图(c,xyz.class))

这会产生NullPointerException

我的第一部分代码是

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
log.e(“ssas”、“sasafa”)

那么如何做到这一点呢?

片段不扩展
上下文
,而
意图
构造函数希望第一个参数正好是这个参数

Context c
变量是多余的,因为默认情况下,
片段
保存父活动

您需要使用片段附加到的活动(扩展
上下文的类):

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

您会得到一个
NullPointerException
,因为您从未将值分配给
Context c
。 因此,正如前面提到的user3249477一样,使用方法
getActivity()
为c赋值,就像
c=getActivity()

或者在启动意图时直接调用它。这看起来是这样的:
startActivity(新的意图(getActivity(),xyz.class))

为什么要两次定义上下文c?使用新的意图(getActivity(),xyz.class)