在我的主活动中(所有事情都发生在我的应用程序中),我现在只调用了另外两个活动,这两个活动通过按下按钮来回调我的MainActivity。我如何在我的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
}
但是,当我运行我的应用程序时,我发现当退出这两个活动时,他们正在预定义方法,我不希望他们to...am,我做错了什么?
发布于 2013-12-18 15:46:50
对每个意图设置不同的操作,然后使用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);
或任何特定于您的意图试图实现的操作。
发布于 2013-12-18 15:51:24
我所做的只是在我传递的Intent
中设置一个Extra
,然后进行比较。就像这样。创建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
调用它的时候。
https://stackoverflow.com/questions/20662441
复制