[英]Return int value from method in Java
我的任務是在Android
制作一個簡單的餐廳菜單應用程序。 因此,主頁由“ Food
按鈕和“ Drink
按鈕組成。 如果單擊Food
按鈕,將顯示食物菜單頁面。 如果單擊“ Drink
按鈕,將顯示飲料菜單頁面。
MainActivity.java
:
int x = 1;
public int value()
{
x = 1;
return x;
}
public void clickFood(View view)
{
value();
Intent intent = new Intent(MainActivity.this, MenuList.class);
startActivity(intent);
}
public int value2()
{
x = 2;
return x;
}
public void clickDrink(View view)
{
value2();
Intent intent = new Intent(MainActivity.this, MenuList.class);
startActivity(intent);
}
MenuList.java
:
mainListView = (ListView) findViewById(R.id.mainListView );
int y = 1;
if(main.x == y)
{
// List of food
fooddrink = new String[]{"Fried Chicken", "Fried Rice"};
}
else
{
// List of drink
fooddrink = new String[]{"Ice Tea", "Ice Coffee"};
}
ArrayList<String> listFoodDrink = new ArrayList<String>();
listFoodDrink.addAll( Arrays.asList(fooddrink) );
listAdapter = new ArrayAdapter<String>(this, R.layout.menu_list_row, listFoodDrink);
mainListView.setAdapter( listAdapter );
問題是,盡管單擊了“ Drink
按鈕,但ListView
的輸出始終顯示食物菜單 。 我發現這是因為MainActivity.java
中的x
值未返回該值,所以int x
值始終為1。
我怎么做錯了?
您有兩個活動MainActivity和MenuListActivity.MainActivity中有兩個按鈕Food和Restaurant。 每個事件都有句柄單擊事件,如下所示:
foodButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MenuList.class);
intent.putExtra("type",1);//pass 1 for food
startActivity(intent);
}
});
restaurantButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MenuList.class);
intent.putExtra("type",2);//pass 2 for Restaurant
startActivity(intent);
}
});
現在,在MenuList活動中,您必須獲取鍵“類型”的值,並根據類型值將適當的數據源傳遞給適配器。您可以執行以下操作(在MenuList活動的onCreate中):
int type=getActivity().getIntent().getExtras().getInt("type");
i(type==1)
{
// List of food
fooddrink = new String[]{"Fried Chicken", "Fried Rice"};
}
else
{
// List of drink
fooddrink = new String[]{"Ice Tea", "Ice Coffee"};
}
ArrayList<String> listFoodDrink = new ArrayList<String>();
listFoodDrink.addAll( Arrays.asList(fooddrink) );
listAdapter = new ArrayAdapter<String>(this, R.layout.menu_list_row, listFoodDrink);
mainListView.setAdapter( listAdapter );
這是你的問題:
MainActivity main = new MainActivity();
您創建一個新的MainActivity
實例(而不是“來自”實例),其中x = 1
。
在MainActivity
中將x
設為例如靜態
static int x = 1;
並在MenuList.java
使用它,如下所示:
if(MainActivity.x == y)
{ ...
這不是你應該怎么走在Android
考慮到其組件的生命周期 (更多的是 )。 一旦MainActivity
被系統銷毀, x
就是靜態的,始終= 1
,除非MainActivity
另一個實例對其進行了更改。
因此,您可以使用多個選項,其中之一是將x
值存儲在某個位置,例如在SharedPreferences
。 另一個方法是按照@VVJ的回答在Intent's
額外值內傳遞值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.