如果某个特定的Activity
是从另一个Activity
启动的,我如何发送或检测引用或标志?我实际上需要一种表单,在这种表单中,只有当特定的Activity
调用某段代码时,我才能执行这段代码,例如:
练习1:
Intent intent = new Intent(this,ranking.class);
startActivity(intent);
Activity2:
Intent intent = new Intent(this,ranking.class);
startActivity(intent);
Ranking.class (这是伪代码,因为我真的不知道该怎么做/做什么)
if(I was called by Activity 1) {
//do something
} else {
finish();
}
发布于 2019-06-20 08:22:32
你可以通过.putExtra
向你的Intent
发送一条消息。
练习1
Intent intent = new Intent(this,ranking.class);
intent.putExtra("activity", 1);
startActivity(intent);
练习2
Intent intent = new Intent(this,ranking.class);
intent.putExtra("activity", 2);
startActivity(intent);
Ranking.class
Intent intent = getIntent();
int activityNumber = intent.getIntExtra("activity", 0);
if (activityNumber == 1) {
//do something
} else{
finish();
}
发布于 2019-06-20 17:39:11
@以色列-德拉-克鲁兹的答案是正确的,你需要使用extra
来区分旗帜。这里的版本更紧凑,避免使用幻数和幻键
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
魔术密钥和魔术数字的情况下创建意图:
// from activity one
Intent intent = RatingActivity.createIntentFromActivityOne(this);
startActivity(intent);
// from activity two
Intent intent = RatingActivity.createIntentFromActivityTwo(this);
startActivity(intent);
https://stackoverflow.com/questions/56677378
复制相似问题