我是android新手。我正在開發餐廳菜單應用程序,我創建了列表視圖,顯示餐廳中的物品名稱。當我在列表視圖中選擇任何一個項目時,它將啓動另一個活動,它包含顯示所選項目的詳細說明的文本視圖字段。同樣,當我選擇其他項目時,它應該啓動相同的活動,但數據應該是選定的項目,如何實現這一目標?如果我使用sqlite數據庫的數據源。如何用不同的數據調用相同的活動(相同的佈局)?
回答
你需要傳遞的價值觀onItemClick:
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivity(intent);
如果你想要一些數據,從所謂的活動回來,那麼你可以使用startActivityForResult()爲:
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivityForResult(intent, requestCode);
在所謂的活動,你可以設置數據爲:
setResult(RESULT_OK, intent);
注意:在這裏您設置意圖的值並將其傳遞給setResult()。
在返回返回到調用活動,你可以通過重寫得到的數據:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
//Get data from Intent "data" and do your task here....
}
}
注意:您可以通過基本數據類型值直通意向,如果你想通過其他的類型,那麼你必須使用捆綁像這個。在活動
Bundle data = new Bundle();
data.putIntArray(key, value);
//same way you can set other values.......
//Now set this Bundle value to Intent as you do for primitive type....
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(data);
startActivity(intent);
接收數據:
//For primitive values:
DataType var_name = getIntent().getExtras().get(key);
//For Bundle values:
Bundle var_name = getIntent().getExtras().getBundle(key);
使用intent extras來實現這一點。 您可以使用intent.putExtra(「KEY」,VALUE)將數據傳輸到您的活動。 在接收活動中,您可以通過調用getIntent()。getExtras();它會返回一個包含您在調用活動中添加的附加內容的Bundle。
你要使用額外的的Intent
Bundle
,例如
我們假設您有一個MenuListActivity
顯示菜單列表和MenuItemActivity
其中更詳細顯示單個菜單項。
在你MenuListActivity.onListItemClick()
要點擊的菜單項的ID傳遞到您的MenuItemActivity
:
public void onListItemClick(ListView list, final View view, int position, long id) {
final Intent intent = new Intent(this, MenuItemActivity.class); // from -> to
intent.putExtra(MenuItemActivity.ITEM_ID, id); // extra arguments: the menu item ID
startActivity(intent);
}
在你MenuItemActivity
你必須恆定,以確定菜單項(以上使用):
public static final String ITEM_ID = "item_id";
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
long menuItemId = extras.getLong(ITEM_ID);
// fetch your menu item from database, using ID
感謝您的回答!但我不明白什麼劑量id包含,我們通過intent.putExtra()傳遞。劑量它包含選定列表行的長值。如果是,那麼這個值將如何幫助從數據庫中獲取數據? – sagar
當使用'CursorAdapter'填充你的'ListView'時,你的SQLite數據庫中已經有了一個ID列(例如主鍵)。 'onListItemClick'同時傳入'position'(這對你的用例來說是無用的)和'id'--這是你用於CursorAdapter和你的SQLite數據庫的相同的ID - 所以它非常適合看在細節活動中添加菜單項。 –
這是許多與Android數據庫相關的類迫使您提供基於'BaseColumns._ID'的ID列的原因之一 - 這樣,它們總是有一個主鍵來唯一標識每條記錄並將其傳遞迴您的代碼如有必要。 –
取決於您想要達到的目標。假設您想要發送列表視圖項目的位置,然後單擊方法發送標識符到具有意圖的活動
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
//listView.getItemIdAtPosition(position);
// TODO Auto-generated method stub
Intent i=new Intent(MyActivity.this,NewActivity.class);
i.putExtras("position",""+position);
startActivity(i);
}
同樣,如果你要發送的數據,必須相應工作
- 1. 相同的佈局和相同的onclicklisteners多個活動
- 2. ASP.Net MVC:使用不同的佈局顯示相同的數據
- 3. 我應該如何使用相同的佈局創建活動?
- 4. 相同佈局不同的內容html
- 5. setResult調用相同的活動,而不是調用父活動
- 6. 對兩種不同的活動使用相同的佈局是否可以?
- 7. 多個不同的調用相同的活動問題
- 8. 同一活動中的不同佈局
- 9. 兩個佈局相同的同一活動
- 10. 如何在相同的活動回到以前的佈局
- 11. TabHost並調用相同的活動
- 12. 使用相同數據延遲Ajax調用相同的URL
- 13. 使用2個佈局進行相同的活動時出錯
- 14. 對所有活動使用相同的景觀佈局
- 15. CakePHP的:使用相同的佈局
- 16. 相同的佈局,不同的內容使用瓷磚
- 17. 使用相同的recyclerview適配器與不同的佈局
- 18. 單個滾動2個相同的佈局在不同的div?
- 19. FragmentStatePagerAdapter,相同片段,不同佈局
- 20. 不同的活動或同樣的活動,但不同的佈局
- 21. 如何切換到不同的佈局,並使用他們的android中的相同活動的小部件?
- 22. 相同的查詢,相同的數據庫,不同的結果
- 23. php,相同的數據,相同的計算,不同的結果
- 24. Rails不同設計郵差佈局的相同動作
- 25. 不同的JNI調用的相同參數是否具有相同的值?
- 26. 如何爲不同的bean重用相同的數據表?
- 27. 如何用不同的名稱調用相同的程序?
- 28. 在不同的活動中使用相同的'OnClickListener'
- 29. 如何在Android中的不同佈局中使用相同的UI實例
- 30. 如何針對相同尺寸的類別設備使用不同的佈局?
感謝烏拉圭回合的答案! – sagar
非常清楚的解釋!謝謝。 –