2012-04-27 8 views
1

2つの単純なアプリケーションがあるので、2つの異なるパッケージがあるとします。 これらのパッケージにはそれぞれActivityがあり、アプリケーションアイコンをクリックして起動できます。次の2つの活動があることを仮定します既に開始されている特定のアクティビティにデータを送信するにはどうすればよいですか?

  • MyFirstActivity、パッケージにorg.secondexample.secondactivity

あるパッケージorg.firstexample.firstactivity

  • MySecondActivity、にしている私たちはMyFirstActivity活動を開始していると仮定し、それが走っています。 MySecondActivityアクティビティは、MyFirstActivityアクティビティに直接データを送信できますか?

    2つのアクティビティ(異なるパッケージにあります)は、データの交換によって互いに通信できるようにしたいと思います。

  • 答えて

    1

    あなたはMyFirstActivityからMySecondActivityを起動している場合は、この方法を使用します。あなたがデータを渡したい場合はOnCreateの

    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に()

    Bundle bundle = this.getIntent().getExtras(); 
    String name = bundle.getString("Name"); 
    
    +0

    [OK]を、しかし、 'MySecondActivity'が現在実行されている場合は? – enzom83

    +0

    あなたがアンドロイドで知っているように、1つのアクティビティはユーザが一度に走っていることを示しています。アクティビティが実行されていない場合は、onPouse状態になっているか、完了している可能性があります。 –

    +0

    あなたは正しいです!そして、「MyFirstActivity」の代わりにサービスがあった場合は?言い換えれば、アクティビティ(実行中)とサービス(アクティビティを再開または破棄することなく)を互いに通信させる方法を考えます。 – enzom83

    0

    :活動MyFirstActivityで

    を破壊活動を再開せずにリスナーを作る必要があります。

    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を送信している...

    関連する問題