Android无法分辨意图

时间:2013-12-18 15:44:53

标签: android android-intent android-activity oncreate

在我的主要活动中(我的应用程序中发生了所有事情)我现在只调用另外两个活动,最后通过按下按钮回拨到我的MainActivity。如何区分这两个Intent回到我的MainActivity?根据我在两个单独的活动中所做的事情,我有一些我希望进行的单独操作。

继承我尝试的内容:

Intent intent = getIntent();
String s_message = intent.getStringExtra(AppSettings.EXTRA_MESSAGE);
String f_message = intent.getStringExtra(ViewFavorites.EXTRA_MESSAGE);

if(s_message != null) {
 //do something
} else if (f_message != null) {
 //do something
}

但是当我运行我的应用程序时,我发现当退出这两个活动时,他们正在采用我不希望他们的方法......我是否会出错?

2 个答案:

答案 0 :(得分:0)

为每个意图设置不同的ACTION,然后使用if(getIntent()。getAction()。equals(ACTION))来区分意图。

public class MainActivity extends Activity {

public static final String ACTION_ONE = "com.yourpackage.ACTION_ONE";
public static final String ACTION_TWO = "com.yourpackage.ACTION_TWO";

@Override
protected void onCreate(Bundle savedInstanceState){
     super.onCreate(savedInstanceState);

     Intent intent = getIntent();
     if(intent.getAction() != null){
         if(intent.getAction.equals(ACTION_ONE){
            //DO SOMETHING
         } else if (intent.getAction.equals(ACTION_TWO){
            //DO SOMETHING
         }
     }
}
.....

}

然后当您以意图开始主要活动时:

Intent intent = new Intent(MY_CURRENT_CONTEXT, MainActivity.class);  //Or MainActivity subclass   

添加

intent.setAction(ACTION_ONE);

或任何特定于您的意图所要完成的行动。

答案 1 :(得分:0)

我所做的只是在我的传递Extra中设置一个Intent然后进行比较。像这样的东西。创建Intent时添加Extra以与

进行比较
intent.putExtra("source", "appSettings");

然后在Activity检查该值是什么

Intent intent = getIntent();
String source  = intent.getStringExtra("source");  // get that value here

if(s_message != null) {
    if ("appSettings".equals(source)){
    //do something
    } else if (viewFavorites.equals(source)) {
      //do something else
    }
}

您可以使用此变体来指定Extra的方式,但这是一个适合我的简单示例,尤其是当只有少数Activites将调用此之一。