检查对象是否为空

时间:2017-05-11 09:18:49

标签: java android android-fragments

我一直在尝试从片段向我的mainActivity发送String。我不知道我是否做得对,但是在用户按下片段中的按钮后我开始新的mainActivity Intent。 我想要做的是当打开应用程序时,如果没有从fragment发送的String消息,则需要加载片段而不是mainActivity。 在主Activity的开始我尝试检查消息是否为空但我收到错误,应用程序不想启动,因为我正在尝试访问空对象

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.audriusalekna.camerapht / com.example.audriusalekna.camerapht.MainActivity}:java.lang.NullPointerException:尝试调用虚方法' java .lang.String android.os.Bundle.getString(java.lang.String)'在null对象referenc

我应该采用不同的方法吗?

这是我的代码

Intent intent = getIntent();
    if(intent.getExtras().getString("tagsText") == null){
        Fragment fragment = TagsFragment.newInstance(tagsText, "blah");

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.fragment, fragment).commit();
        cameraBtn.setEnabled(false);
        cameraBtn.setVisibility(View.GONE);
        firstTime = false;
    }
    else{
        tagsText = intent.getExtras().getString("tagsText");
        Log.v("MESSAGE", tagsText);
    }

2 个答案:

答案 0 :(得分:1)

您需要检查intent本身是否为NULL,以及其中的bundle是否也不是NULL

if(intent!=null && intent.getExtras() != null &&  intent.getExtras().getString("tagsText") == null){

else不应该处理意图或额外内容,因为其中大部分都是null

答案 1 :(得分:0)

下面:

intent.getExtras().getString() == null

你正在检查“一级太深”。你需要:

intent.getExtras() == null

在这里避免这个问题!