使用putExtra()时的显式意图错误

时间:2017-04-24 13:04:21

标签: android android-intent parameter-passing

考虑应用程序有三个活动,即A1,A2,A3:

A1调用A2并在其中附加一个值为Intent“value”

catch

其中A2接受来自A1的附加值并将其存储在“sample”中:

int

现在控件从A2 .ie转到A3,A2转到A3,现在当A3调用活动A2时出现错误,因为A2有Intent i=new Intent(A1.this,A2.class); i.putExtra("value",editTextVal); //editTextVal is got from an editText during Runtime 试图从Intent获取附加数据因为A3中使用的Intent没有sample=getIntent().getExtra().getString("value"); 就是这个,

.getExtra()

因此出现运行时错误..帮我解决这个问题..

2 个答案:

答案 0 :(得分:0)

    if(getIntent().hasExtra("value")) {
        sample=getIntent().getStringExtra("value");
    }

    /* while using sample check for null

     */
    if(!TextUtils.isEmpty(sample)) {
        // use sample here
    }

答案 1 :(得分:0)

当你从A3移动到A2时,A2活动会搜索一个Bundle对象,但由于你没有将任何值从A3传递给A2,它会给出零点异常 一种方法是设置一个标志(静态变量),如果FLAG == 1尝试获取Bundle对象,当你在A2活动检查值FLAG上从A1转换为A2时,为它分配任何值,如1。无论何时从A2移动,请确保将FLAG更改为1

以外的其他值
      //Declare a Variable FLAG in A1 as 
      public static int FLAG;

      // For transition from A1 to A2
       Intent I =new Intent(A1.this,A2.class);
       I.putExtras("Key","Value");
       FLAG=1;
       startActivity(I);

       //on your A2 activity 
       if(A1.FLAG==1)
       {
          Bundle extras=getIntent().getExtras();
          String Value=extras.getString("Key");
       }

        //When you make a transition to A3

       Intent i1=new Intent(A1.this,A2.class);
       A.FLAG=2;
       startAcitivy(i1);