2012-04-27 31 views
1

假設我們有兩個簡單的應用程序,所以我們有兩個不同的包。 這些包中的每一個都有一個Activity,可以通過單擊應用程序圖標啓動。假設兩個活動如下:如何將數據發送到已經啓動的特定活動?

  • MyFirstActivity,這是成包org.firstexample.firstactivity
  • MySecondActivity,這是成包org.secondexample.secondactivity

假設我們已經推出了MyFirstActivity活動,所以它在跑。 MySecondActivity活動可以將數據直接發送到MyFirstActivity活動嗎?

我希望兩個活動(它們在不同的包中)可以通過交換數據來相互通信。

回答

1

如果從MyFirstActivity推出MySecondActivity然後用這樣的方式:如果您想通過數據

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"); 
+0

好吧,但如果'MySecondActivity'當前正在運行? – enzom83 2012-04-27 17:32:30

+0

正如你在android中所知道的那樣,只有一個活動對用戶意味着一次運行。如果活動未運行,則可能處於onPouse狀態或完成。 – 2012-04-27 17:35:54

+0

你是對的!如果有服務而不是'MyFirstActivity'?換句話說,給定一個活動(正在運行)和一個服務:如何使它們相互通信(不恢復或銷燬活動)? – enzom83 2012-04-27 18:15:21

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的聽衆發送10到MyFirstActivity ...

相關問題