1

假设我们有两个简单的应用程序,所以我们有两个不同的包。这些包中的每一个都有一个Activity可以通过单击应用程序图标来启动的包。假设这两个活动如下:

  • MyFirstActivity,这是在包中org.firstexample.firstactivity
  • MySecondActivity,这是在包中org.secondexample.secondactivity

假设我们已经启动了MyFirstActivity活动,所以它正在运行。活动是否可以MySecondActivity直接向活动发送数据MyFirstActivity

我希望这两个活动(它们在不同的包中)可以通过交换数据相互通信。

4

2 回答 2

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");
于 2012-04-27T17:14:49.163 回答
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...

于 2012-04-27T17:44:31.760 回答