如何在不同的活动呼叫上执行不同的功能?

时间:2015-04-16 15:52:08

标签: android android-activity mobile task

假设我有三个类:第一,第二和第三。

我实际上要做的是:

如果我从First调用activity second,那么我想要执行一些task1,如果我从第三个调用activity second,那么一些不同的task2应该执行。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

在启动Second的意图中,添加一些Bundle数据以标记此意图是来自First还是Third。细节是here

如果我这样做,

// Constants.java
public static class Constants {
    public static String BUNDLE_KEY_FROM = "_BUNDLE_KEY_FROM";
}

FirstThird中,

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){};

请初始化所有用作示例的变量。祝好运!如果你不明白,请告诉我。