首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用putExtra()时的显式意图错误

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

Stack Overflow用户
提问于 2017-04-24 13:04:20
回答 2查看 168关注 0票数 0

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

A1使用附加在其意图“值”中的值调用A2

代码语言:javascript
复制
Intent i=new Intent(A1.this,A2.class);
i.putExtra("value",editTextVal); //editTextVal is got from an editText during Runtime

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

代码语言:javascript
复制
sample=getIntent().getExtra().getString("value");

现在控件从A2 .i.e.转到A2意图到A3,现在当A3调用ActivityA2时出现了一个错误,因为A2有一个.getExtra(),它试图从意图中获取附加的数据,因为在A3中使用的意图没有.putExtra(),这很简单,

代码语言:javascript
复制
Intent i3=new Intent(A3.this,A2.class);

所以会出现一个运行时错误。帮我解决这个..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-24 13:12:26

当您从A3迁移到A2时,A2活动将搜索一个Bundle对象,但是由于您没有将任何值从A3传递给A2,所以它给空点异常提供了一种方法:设置一个标志(静态变量),如果FLAG==1试图获取Bundle对象,则在从A1到A2的标记上进行从A1到A2的转换时,设置一个标志(静态变量)并为其赋值。每当您从A2移动时,请确保将标志更改为除1以外的其他值。

代码语言:javascript
复制
      //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);
票数 0
EN

Stack Overflow用户

发布于 2017-04-24 13:11:43

代码语言:javascript
复制
    if(getIntent().hasExtra("value")) {
        sample=getIntent().getStringExtra("value");
    }

    /* while using sample check for null

     */
    if(!TextUtils.isEmpty(sample)) {
        // use sample here
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43588875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档