我需要知道如何處理選項卡之間的意圖。例如,我有一個帶有兩個選項卡的選項卡活動。首先在內容上是文本視圖。另一個是地圖視圖。當我點擊該文本視圖時,它重定向到tab2。它可以通過setCurrentTab(1)或setCurrentTabByTag(「tab2」)方法輕鬆實現。但是我想將經緯度和長距離值傳遞給該地圖活動以放置引腳。在java中使用intent或getter/setter的更好方法是什麼?你喜歡哪個?如果你的答案是「意圖」。怎麼樣?如何在java/Android中的標籤之間使用意圖?
回答
一個有趣的問題。我瞭解到,您希望在第一個標籤頁視圖中點擊第二個標籤頁,但也會將特殊數據傳遞給第二個標籤頁,而第二個標籤頁依賴於第一個標籤頁中的操作。
我通常會在活動的標籤頁中開始您的視圖。但是,這是在配置選項卡主機的時候完成的。這意味着既可以讓用戶選擇lat的活動和同時顯示lat的活動同時開放。
因此,您無法將信息添加到用於初始化選項卡主機的意圖。 我不喜歡這個解決方案,但唯一出現在我腦海中的是使用定製的application,該定製存儲對包含數據的對象的引用,您需要在第二個視圖中更新視圖標籤。您必須使用自己的類擴展應用程序,然後將該類添加到manifest中,現在可以在第一個選項卡中調用getApplication將其轉換爲您的應用程序類set lat和long,然後再調用setCurrentTab。在第二個選項卡中,您可以再次調用getApplication(),然後您將獲得應用程序對象,該對象在運行應用程序的每個時刻都與每個活動相同。然後您再次將其轉換爲您的應用程序對象並檢索lat和long值。請參閱google中的page以瞭解如何使用自定義應用程序類。
要使用自定義的應用程序類中添加以下到您的應用程序標記在您的清單:
<application
...
android:name=".somepackage.CustomAppClass"
這將告訴Android的實例化CustomAppClass爲您的應用程序類在你的應用程序啓動的時刻。您需要擴展應用程序以避免啓動時出現錯誤。
另一個解決方案,但我不希望自己初始化視圖,並用視圖而不是活動初始化tabhost。在其中一個選項卡中顯示地圖視圖時,這可能會非常沉重。
你讓我困惑不已。我正在爲選項卡使用不同的活動。當我點擊tab1上的一個視圖。它重定向到該地圖活動(第二個標籤)。主要的事情我從tab1獲取經度和緯度。該值動態變化。 – Praveen 2010-06-15 15:57:23
這是您在此情況下無法使用意圖的問題,因爲您在初始化選項卡時發送啓動地圖活動的意圖。這意味着你以後不能附加數據。你需要有一個全局可訪問的變量,這兩個活動都包含緯度長的值 我修改了我的文章,它仍然非常複雜,但可能不會再讓人困惑。我嘗試找到一個使用自定義應用程序類的教程。 – Janusz 2010-06-15 16:32:31
然後我想使用getter/setter方法。對? – Praveen 2010-06-15 17:50:05
如果你想通過活動之間的值,我建議在看
http://developer.android.com/reference/android/content/SharedPreferences.html
擺脫一個itent值到另一個的最佳途徑。
使用sharedPrefrences,整個應用程序只有一個類實例,這意味着您可以將值存儲在文件中,切換intent或活動,然後調用那些包含數據的sharedPrefrence文件。
唯一的缺點是你必須傳遞原始類型(int,string,boolean),但我相信你會想辦法解決這個:)。
如果您制定了用於啓動第二個選項卡活動的意圖全局意圖。
然後,您可以在第一個選項卡的onPause()
中爲此目的添加額外內容。注意:由於此活動的onPause()
永遠不會被調用,因此您必須在單獨的活動中定義所有標籤,而不是您的標籤主機TabActivity
。
這也有助於與答案以上,如果使用的是保存在活動的全局變量擴展應用程序,你可以因爲它是之前解僱活動切換在onPause()
設置此,你可能會發現如果設置的問題。此別處
我沒有看到這裏的問題: 也許它的hackish,但下面的代碼的一點點對我的作品:
public boolean onClick(View v) {
//get your data you wanna send.
//If it is an Object it would be good if it is Parcelable
Object o = getYourData();
// or Parcelable p = getYourData
Activity activity = getParent();
//I'm assuming were inside an Activity which is started by TabActivity
if (activity instanceof TabActivity){
TabActivity ta = (TabActivity)activity;
//now determine the Tab you wanna start
ta.getTabHost().setCurrentTabByTag("yourTag");
//or ta.getTabHost().setCurrentTab(yourID);
Activity current = ta.getCurrentActivity();
//check if the Activity is the one you wanna start
if (current instanceof YOUR_ACTIVITY_YOU_WANNA_START){
//Cast to your Activity
YOUR_ACTIVITY_YOU_WANNA_START yourActivity =
(YOUR_ACTIVITY_YOU_WANNA_START)current;
// you only need to put Data inside your Intent
Intent intent = new Intent();
intent.putExtra("EXTRA_DATA_TAG", o);
//your Activity must Override onNewIntent and make it public,
//or simply add another method
//with whatever You like as parameter
yourActivity.onNewIntent(intent);
return true;
}
}
return false;
}
這樣你就不必惹應用,SharedPrefs或其他unn這裏提到的esseary東西
- 1. 如何使用ggplot2更改軸標籤和刻度標籤之間的間距?
- 2. 如何在Javascript c3圖表中使用帶間距的標籤?
- 3. Twitter Bootstrap標籤:如何:增加標籤之間的間距
- 4. 如何使用SimpleHtmlDom在HTML頭標籤之間插入鏈接標籤
- 5. 如何在Android中的標籤按鈕之間添加空間?
- 6. jQuery在標籤圖像之間切換
- 7. 如何使用href在標籤之間切換?
- 8. 如何在html標籤之間使用php?
- 9. 如何使用Polymer 1.0在標籤之間滑動?
- 10. 如何使用XElement在標籤之間添加值?
- 11. 如何使用JQuery在標籤之間反轉內容?
- 12. 如何使用jflex在特殊標籤之間獲取文本
- 13. 如何使用1意圖在活動之間進行傳輸?
- 14. 標籤之間的間距
- 15. 在SublimeText中的標籤之間移動
- 16. 在android中的標籤之間切換?
- 17. 如何使用nusoap在XML請求中的兩個標籤之間的值?
- 18. Python-HTML-如何使用BeautifulSoup去除標籤之間的內容
- 19. 如何使用Regex提取HTML標籤之間的數據?
- 20. 如何使用sax contenthandler獲取標籤之間的值?
- 21. 如何在顯示標籤庫之間顯示圖像?
- 22. JFreeChart圖例標籤之間的差距
- 23. preg匹配標籤之間的標籤之間的相同標籤
- 24. 如何在使用facet_wrap時減少刻面標籤之間的垂直間距?
- 25. 標籤之間的preg_replace標籤
- 26. 如何使用vba在Lotus Notes中打開的標籤之間切換?
- 27. 在UITabController中的標籤之間切換時使用'pushViewController'動畫
- 28. 使用其中的按鈕在標籤頁之間切換
- 29. 如何用div標籤劃分三列之間的空間?
- 30. 在兩個標籤之間嵌入XML中的特殊標籤
你的標籤頁是如何定義的?他們是嵌入視圖還是不同的活動? – Pentium10 2010-06-15 15:27:17
我已經使用了不同的活動。 – Praveen 2010-06-15 15:53:28