Android 在检查某些情况下动态启动活动

Android 在检查某些情况下动态启动活动,android,android-activity,android-edittext,bundle,if-statement,Android,Android Activity,Android Edittext,Bundle,If Statement,实际上,在我的应用程序中,我已将一个活动设置为主活动,在此活动中,我正在检查在此活动中检索到的一些文本束值的条件,该活动在检查edittext长度是否为null时启动,并根据每个条件下打开的相应活动,但它给我一个错误:- 11-16 12:40:48.588: E/AndroidRuntime(456): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.avigma.shpoonkle/com.avig

实际上,在我的应用程序中,我已将一个活动设置为主活动,在此活动中,我正在检查在此活动中检索到的一些文本束值的条件,该活动在检查edittext长度是否为null时启动,并根据每个条件下打开的相应活动,但它给我一个错误:-

11-16 12:40:48.588: E/AndroidRuntime(456): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.avigma.shpoonkle/com.avigma.shpoonkle.CheckActivity}: java.lang.NullPointerException
11-16 12:40:48.588: E/AndroidRuntime(456):  at com.avigma.shpoonkle.CheckActivity.onCreate(CheckActivity.java:19)
我正在提供我的CheckActivity课程,请帮助我…提前谢谢

 public class CheckActivity extends Activity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle i=  getIntent().getExtras();
        String a=i.getString("a");
        String b12=i.getString("b12");
        String c1=i.getString("c1");
        String d=i.getString("d");
        String e111=i.getString("e111");
        String h=i.getString("h");
        Intent i1;

        if((a.length()>1)&&(b12.length()>1)&&(c1.length()>1)&&(d.length()>1)&&(e111.length()>1)&&(h.length()>1))
        {
            i1 =new Intent(getApplicationContext(),ShpoonkleActivity.class);
        }
        else
        {
            i1=new Intent(getApplicationContext(),Test.class);
        }
        startActivity(i1);
        finish();
    }
}

检查第19行。nullPointerException表示您试图访问实际为空的对象/变量


粗略地看一下
if((a.length()>1)和(b12.length()>1)和(c1.length()>1)和(e111.length()>1)和(h.length()>1))
似乎是a/b12。。。可能为空

如果我没有弄错的话,您已经将CheckActivity设置为您的主要启动程序活动。那么,如何才能发送附加信息以启动该活动?当应用程序打开时,该活动将自动调用

此外,如果您将选中
getIntent().hasExtra(“a”)
并对其他字符串进行相同的检查,您将始终得到它
false
,因为您的意图中不会附加任何此类额外内容


因此,基本上,您的工作方式是不正确的。请使用其他解决方案来满足您的需要。

在获取额外信息时,请使用字符串c1=i.getString(“b12”,null);检查c1是否为null,那么proceeds就无关紧要了……将其作为主要活动就足以解决您遇到的问题。简单地说,在你的应用程序中,你不能在第一个意图中有额外的内容,这就是我的观点!你是在意图中附加额外内容的人,默认启动应用程序的意图不会为您提供这些额外的意图。thnx我明白您的意思,实际上这是不可能的,我应该尝试其他方法在主活动中检索其他活动edittext的文本…是这样吗?如果您在这些edittext中有一些硬编码的文本,那么您就无法检索它。但是,再次,如果你想记住用户在那个里放了什么,下一次,在启动应用程序时,你需要检查那个值并相应地重定向用户,这是不可能的。因为每次您的主活动中都会将其值设为null。您可以在那里使用SharedReference来记住用户的文本,并在以后的主活动中使用它。这对您很有用。我在该活动中使用了共享首选项来保存edittext的文本及其工作状态,但无法找到进一步的方法检索主活动中存储的共享优先权文本,如果可以检索,我很含糊,当我们检索主活动中的共享优先权文本时,这很好。是的……这很好。但您需要保持其默认值,并根据应用程序中活动的重定向。