假设我们有两个简单的应用程序,所以我们有两个不同的包。
每个软件包都有一个Activity
,可以通过单击应用程序图标启动。假设这两项活动如下:
MyFirstActivity
,它位于包org.firstexample.firstactivity
MySecondActivity
,它位于包org.secondexample.secondactivity
假设我们已启动MyFirstActivity
活动,因此它正在运行。
MySecondActivity
活动可以直接将数据发送到MyFirstActivity
活动吗?
我希望这两个活动(在不同的包中)可以通过交换数据相互通信。
答案 0 :(得分:1)
如果从MyFirstActivity启动MySecondActivity,请使用以下方式:
活动MyFirstActivity中的:
Intent intent25 = new Intent(Intent.ACTION_MAIN).addCategory(
Intent.CATEGORY_LAUNCHER).setClassName("org.secondexample",
"org.secondexample.MySecondActivity").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.addFlags(Intent.FLAG_FROM_BACKGROUND).setComponent(new ComponentName("rg.secondexample",
"org.secondexample.MySecondActivity"));
Bundle bundle = new Bundle();
bundle.putString("Name", "test");
intent25.putExtras(bundle);
getApplicationContext().startActivity(intent25);
和MySecondActivity oncreate()
Bundle bundle = this.getIntent().getExtras();
String name = bundle.getString("Name");
答案 1 :(得分:0)
如果你想在没有恢复破坏活动的情况下传递数据,那么你必须为此做出监听..
public class MyFirstActivity extends Activity implements OnDataChanged {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onChange(int a) {
Log.e("", "a : " + a);
}
}
MySecondActivity.java
public class MySecondActivity extends Activity {
private OnDataChanged mOnDataChanged;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sendData(10);
}
public interface OnDataChanged {
public void onChange(int a);
}
private void sendData(int a) {
mOnDataChanged.onChange(a);
}
}
MySecondActivity通过实现MySecondActivity的监听器向MyFirstActivity发送10 ...