如何在android上处理nullpointerexception?

vkc1a9a2  于 2021-07-13  发布在  Java
关注(0)|答案(5)|浏览(243)

这个问题在这里已经有答案了

什么是nullpointerexception,如何修复它(12个答案)
四年前关门了。

我想当我点击按钮。显示connectingreceiver.class
但是nullpointerexception。我想我没有很好地使用上下文。建议我感谢android高级开发者。

private OnClickListener mConnectOnClick = new OnClickListener() {
    Context context= ConfiguredNetworkContent.this;

   @Override
    public void onClick(View v) {

       Intent intent = new Intent(context,Connectingreceiver.class);
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(intent);

 public class Connectingreceiver extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.connecting_dialog);

}
}
x33g5p2x

x33g5p2x1#

检查此项:

private View.OnClickListener mConnectOnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
    Intent intent = new Intent(v.getContext(), Connectingreceiver.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    v.getContext().startActivity(intent);
}

更新:
直截了当的解释是你需要 Context 开始 Activity . 而且在 Onclick() 有一种过眼云烟的景象 Context 已经存在了。所以,我只是用它来开始活动。

cvxl0en2

cvxl0en22#

这个上下文在哪里? Context context; 修复 Context context = getApplicationContext;

mfuanj7w

mfuanj7w3#

试试这个

// Add this line after Main class
Button yourButton;

在下面的代码中,不要忘记编辑“yourbuttonidfromxml”

// Add below code in OnCreate method after setContentView
Button yourButton = (Button) findViewById(R.id.yourButtonIDfromXML);
yourButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ConfiguredNetworkContent.this, Connectingreceiver.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                finish();
            }
        });
rn0zuynd

rn0zuynd4#

“context”-为空。您需要执行空检查以避免空指针崩溃。这是最容易解决的异常。
如果您正在中执行onclick事件
activity:- use 这些线。
public static void startreceiver(){

Intent intent = new Intent(YourActivityName.this, Connectingreceiver.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

碎片:-
用这些线
private onclicklistener mconnectonclick=new onclicklistener(){

Context context;
@Override
public void onClick(View v) {
    if(getActivity() != null) {
        startActivity(getActivity());
    }
}

并使用相同的startactivity()方法
另外,重命名startactivity方法。这是一个内置的android方法。喜欢使用驼峰大小写作为你的类名。connectingreceiver-->连接接收器。

lh80um4z

lh80um4z5#

我想我没有很好地使用上下文。
如果需要,您必须使用它,但是根据您的代码,没有初始化 context .
首先初始化 context 或与 ApplicationContext 或者 ActivityContext 就像这里

Context context = YourActivity.this;

那你可以用 startActivity(intent); . 你不需要写信 context.startActivity(intent); . 仅限 startActivity 就足够了。
更新:
不要传递任何上下文,只是简单地传递

customstartActivity();

还有里面 customstartActivity() 方法

public static void customstartActivity (){
 //  Intent intent = new Intent(yourActivity.this, Connectingreceiver.class);
 //  Intent intent = new Intent(ContextWrapper.getBaseContext(), Connectingreceiver.class);
     Intent intent = new Intent(getApplicationContext(), Connectingreceiver.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

相关问题