假設我有一個first.java(活動類)類,並且我在這個類中啓動了另一個活動(second.java - 活動類)。我如何從second.java訪問first.java的實例?有人可以給我一個很好的解釋..一個例子將是偉大的...訪問父活動的實例?
回答
試試這個,如果這項工作4你.........
這樣的事情.....
class first
{
public static first instance;
oncreate()
{
instance=this;
}
public static getInstance()
{
return instance;
}
}
從第二現在級呼叫first.getInstance();
你也可以直接接取例如在這樣first.instance靜態的方式.......
謝謝...
如果你需要你的第二個活動,一些數據返回給你的第一個活動我建議您使用startActivityForResult()開始第二個活動。然後在第一個活動中的onResult()中,您可以完成所需的工作。
在First.java你開始Second.java:
Intent intent = new Intent(this, Second.class);
int requestCode = 1; // Or some number you choose
startActivityForResult(intent, requestCode);
結果方法:
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
// Collect data from the intent and use it
String value = data.getString("someValue");
}
在Second.java:
Intent intent = new Intent();
intent.putExtra("someValue", "data");
setResult(RESULT_OK, intent);
finish();
如果您不希望在第一項活動中做一些工作之前等待第二項活動結束,您可以發送第一項活動活動對此作出反應。
編輯:
如果您需要訪問一些價值你的第一個活動,而製作的靜態引用它,你可以考慮把在你的ActivityGroup活動。
因此,ActivityGroup啓動第一個活動。然後第一個活動使用ActivityGroup來啓動第二個活動。然後,您將通過在第二個活動中調用getParent()來訪問第一個活動。
class MyActivityGroup extends ActivityGroup {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startChildActivity("first", new Intent(this, First.class));
}
public void startChildActivity(Intent intent) {
Window window = getLocalActivityManager().startActivity(id, intent);
if (window != null) {
setContentView(window.getDecorView());
}
}
}
在First.class:
Intent = new Intent(this, Second.class);
((MyActivityGroup) getParent()).startChildActivity("second", intent);
在Second.class:
Activity first = (First) getParent();
您不能直接創建活動。 在第一個活動需要一個靜態變量的活動像這樣,
public static Activity activity;
在OnCreate做到這一點。
activity = this;
然後在第二個活動做到這一點,
Activity activity = (your activity name).activity;
編輯: 對於從一個活動將數據傳遞到其他活動,這是沒有辦法的辦法。 以上答案是從最初被問到的其他活動中獲取活動實例。
要將數據從一個活動傳遞到其他活動通常使用包。但是,如果數據不是原始數據類型,那麼使用應實現parcelable或serializable接口的對象類。然後通過捆綁只能可以通過的對象列表對象。
只有這應該工作
class first
{
public static first instance;
oncreate()
{
instance = this;
}
}
first.instance是從第二類
你可以簡單地調用從兒童活動getParent()
訪問所需要的東西。
我不知道爲什麼其他答案如此複雜。
- 1. 無法訪問子實例中的父實例varibale
- 2. 從子線程訪問父實例
- 3. 訪問父類實例變量
- 4. 從父函數訪問實例變量
- 5. 在父活動中訪問片段viewPager
- 6. 從AsyncTask中的活動訪問實例變量
- 7. 如何訪問Android活動類實例字段?
- 8. 訪問QTabBar實例
- 9. 訪問Openstack實例
- 10. 訪問類實例的父模塊的__all__列表
- 11. 如果子活動調用父活動,是否打開新實例?
- 12. 在動態添加訪問實例MC
- 13. CoreData:訪問NSManagedObject的實例
- 14. 從MainWindow實例訪問應用實例
- 15. Django多表繼承,從父實例的子訪問方法
- 16. 如何在Rails中訪問父模型的實例變量?
- 17. 從子類訪問父級的私有實例變量?
- 18. 如何從iframe訪問父窗口中的CKEditor實例?
- 19. 我如何在PHP中訪問類實例的父項?
- 20. 獲取活動實例
- 21. 活動不會實例化
- 22. Android - 重用活動實例
- 23. 無法實例化活動
- 24. 無法實例化活動
- 25. 從片段訪問父活動的數據
- 26. 從模型管理內聯訪問父模型實例
- 27. Ruby實例變量訪問
- 28. Python - 實例變量訪問
- 29. JSP訪問類實例
- 30. AWS:訪問Auto Scaling實例
這個我覺得是一個正確的答案 – Javanator 2011-02-09 12:47:11
請記住,只要該類存在於jvm中,靜態引用就存在。因此,如果將Activity設置爲靜態變量,即使Activity已經運行onDestroy方法,也可能會遇到內存問題。 – 2011-02-09 12:49:45
我覺得它看起來很尷尬。單身並不總是好的。 – Cristian 2011-02-09 12:49:57