我的任务是在 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);
}
菜单列表.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 );
问题是,ListView
的输出总是显示食物菜单,尽管我点击了Drink
按钮。我发现这是因为 MainActivity.java
中的 x
值没有返回值,所以 int x
值总是 = 1.
我哪里做错了?
最佳答案
这是你的问题:
MainActivity main = new MainActivity();
您创建了一个 MainActivity
的新实例(不是您“来自”的实例),其中 x = 1
。
在MainActivity
中制作x
,例如,static like
static int x = 1;
并在 MenuList.java
中使用它,如下所示:
if(MainActivity.x == y)
{ ...
但是!
考虑到其组件的 lifecycle,这不是您在 Android
中应该采用的方式(更多关于 that )。一旦 MainActivity
被系统销毁,作为静态的 x
总是 = 1
,除非 MainActivity< 的另一个实例
已经改变了它。
因此,您可以使用多个选项,其中之一是将 x
值存储在某处,例如在 SharedPreferences
.另一种方法是在 Intent 的
extra 中传递值根据@VVJ 的回答。
关于java - 从Java中的方法返回int值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33186241/