首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从另一个活动发送/检测对特定活动的引用/标志

如何从另一个活动发送/检测对特定活动的引用/标志
EN

Stack Overflow用户
提问于 2019-06-20 08:03:58
回答 2查看 148关注 0票数 0

如果某个特定的Activity是从另一个Activity启动的,我如何发送或检测引用或标志?我实际上需要一种表单,在这种表单中,只有当特定的Activity调用某段代码时,我才能执行这段代码,例如:

练习1:

代码语言:javascript
复制
Intent intent = new Intent(this,ranking.class);
startActivity(intent);

Activity2:

代码语言:javascript
复制
Intent intent = new Intent(this,ranking.class);
startActivity(intent);

Ranking.class (这是伪代码,因为我真的不知道该怎么做/做什么)

代码语言:javascript
复制
if(I was called by Activity  1) {
    //do something
} else {
     finish();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-20 08:22:32

你可以通过.putExtra向你的Intent发送一条消息。

练习1

代码语言:javascript
复制
Intent intent = new Intent(this,ranking.class);
intent.putExtra("activity", 1);
startActivity(intent);

练习2

代码语言:javascript
复制
Intent intent = new Intent(this,ranking.class);
intent.putExtra("activity", 2);
startActivity(intent);

Ranking.class

代码语言:javascript
复制
Intent intent = getIntent();
int activityNumber = intent.getIntExtra("activity", 0);

if (activityNumber == 1) {
    //do something
} else{
    finish();
}
票数 3
EN

Stack Overflow用户

发布于 2019-06-20 17:39:11

@以色列-德拉-克鲁兹的答案是正确的,你需要使用extra来区分旗帜。这里的版本更紧凑,避免使用幻数幻键

代码语言:javascript
复制
public class RankingActivity extends Activity {

  private static final ACTIVITY_OPTION_KEY = "activityOptionKey";
  private static final int FROM_ACTIVITY_ONE = 1;
  private static final int FROM_ACTIVITY_TWO = 2;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_rating);

     ...

     Bundle bundle = getIntent().getExtra();
     int option = bundle.getInt(ACTIVITY_OPTION_KEY);

     if(option == FROM_ACTIVITY_ONE) {
       // do something when called from activity one
     } else if(option == FROM_ACTIVITY_TWO) {
       // do something when called from activity two
     } else {
       // is there something else?
     }

     ...
  }

  // Use intent factory to remove dependency to magic number and magic key
  public static Intent createIntentFromActivityOne(Activity activity) {
    Intent intent = new Intent(activity, RatingActivity.class);
    intent.putExtra(ACTIVITY_OPTION_KEY, FROM_ACTIVITY_ONE);
    return intent;
  }

  public static Intent createIntentFromActivityTwo(Activity activity) {
    Intent intent = new Intent(activity, RatingActivity.class);
    intent.putExtra(ACTIVITY_OPTION_KEY, FROM_ACTIVITY_TWO);
    return intent;
  }
}

然后,您可以在不知道RatingActivity魔术密钥和魔术数字的情况下创建意图:

代码语言:javascript
复制
// from activity one
Intent intent = RatingActivity.createIntentFromActivityOne(this);
startActivity(intent);

// from activity two
Intent intent = RatingActivity.createIntentFromActivityTwo(this);
startActivity(intent);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56677378

复制
相关文章

相似问题

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