1

2 つの単純なアプリケーションがあり、2 つの異なるパッケージがあるとします。これらの各パッケージにはActivity、アプリケーション アイコンをクリックして起動できる があります。2 つのアクティビティが次のようになっているとします。

  • MyFirstActivity、パッケージに入っていますorg.firstexample.firstactivity
  • MySecondActivity、パッケージに入っていますorg.secondexample.secondactivity

MyFirstActivityアクティビティを起動したので、実行中であるとします。MySecondActivityアクティビティはデータをアクティビティに直接送信できMyFirstActivityますか?

2 つのアクティビティ (異なるパッケージに含まれています) がデータを交換することで相互に通信できるようにしたいと考えています。

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 に答える