假设我有三个类:第一,第二和第三。
我实际上要做的是:
如果我从First调用activity second,那么我想要执行一些task1,如果我从第三个调用activity second,那么一些不同的task2应该执行。
我怎样才能做到这一点?
答案 0 :(得分:2)
在启动Second
的意图中,添加一些Bundle
数据以标记此意图是来自First
还是Third
。细节是here。
如果我这样做,
// Constants.java
public static class Constants {
public static String BUNDLE_KEY_FROM = "_BUNDLE_KEY_FROM";
}
在First
和Third
中,
Intent intent = new Intent(this, Second.class);
intent.putExtra(Constants.BUNDLE_KEY_FROM, "First"); // or "Third"
startActivity(intent);
然后在Second.onCreate()
,
Bundle extras = getIntent().getExtras();
if (extras != null) {
// get data via the key
String val = extras.getString(Constants.BUNDLE_KEY_FROM);
if (val.equals("First") ) {
funcFirst();
}else if(val.equals("Third") ){
funcThird();
}
}
答案 1 :(得分:0)
您可以传递带有一些标志的捆绑包,这样您可以确定您是来自第一个还是第三个活动。试试这个:
public final static String EXTRA_PARAMETERS = "com.example....."; //some name
//in first and third activities
Intent intent = new Intent(this, second.class);
intent.putExtra(EXTRA_PARAMETERS, params); //params could be an array or something to identify from which activity you are calling second an int could be too.
startActivity(intent);
// in second activity
Intent intent = getIntent();
Bundle b = getIntent().getExtras();
try{
parameter = b.getParcelable(first.EXTRA_PARAMETERS); //you can do 2 of this and catch the one is not.
}catch(Exception e){};
try{
parameter = b.getParcelable(third.EXTRA_PARAMETERS);
}catch(Exception e){};
请初始化所有用作示例的变量。祝好运!如果你不明白,请告诉我。