在Java中从方法返回int值
我的任务是在Android中制作一个简单的餐厅菜单应用程序。因此,主页由在Java中从方法返回int值,java,android,return-value,setter,instance-variables,Java,Android,Return Value,Setter,Instance Variables,我的任务是在Android中制作一个简单的餐厅菜单应用程序。因此,主页由食品按钮和饮料按钮组成。如果单击食品按钮,食品菜单页面将出现。如果单击饮料按钮,将显示饮料菜单页面 MainActivity.java: int x = 1; public int value() { x = 1; return x; } public void clickFood(View view) { value(); Intent intent = new Intent(MainA
食品
按钮和饮料
按钮组成。如果单击食品
按钮,食品菜单页面将出现。如果单击饮料按钮,将显示饮料菜单页面
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);
}
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 );
MenuList.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);
}
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 );
mainListView=(ListView)findviewbyd(R.id.mainListView);
int y=1;
if(main.x==y)
{
//食物清单
fooddrink=新字符串[]{“炸鸡”、“炒饭”};
}
其他的
{
//酒单
fooddrink=新字符串[]{“冰茶”、“冰咖啡”};
}
ArrayList ListFoodLink=新建ArrayList();
addAll(Arrays.asList(fooddrink));
listAdapter=new ArrayAdapter(此,R.layout.menu\u list\u行,ListFoodLink);
mainListView.setAdapter(listAdapter);
问题是,ListView
的输出是始终显示食物菜单,尽管我单击了饮料
按钮。我发现这是因为MainActivity.java
中的x
值不返回值,因此intx
值始终为1
我怎么做错了?你有两个活动main activity和MenuListActivity。在main activity中有两个按钮:食物和餐厅。您可以按如下方式处理每个单击事件:
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);
}
});
if(MainActivity.x == y)
{ ...
现在,在MenuList活动中,您必须获取键“type”的值,并根据类型值将适当的数据源传递给适配器
int type=getActivity().getIntent().getExtras().getInt(“类型”);
i(类型==1)
{
//食物清单
fooddrink=新字符串[]{“炸鸡”、“炒饭”};
}
其他的
{
//酒单
fooddrink=新字符串[]{“冰茶”、“冰咖啡”};
}
ArrayList ListFoodLink=新建ArrayList();
addAll(Arrays.asList(fooddrink));
listAdapter=new ArrayAdapter(此,R.layout.menu\u list\u行,ListFoodLink);
mainListView.setAdapter(listAdapter);
这是您的问题:
MainActivity main = new MainActivity();
您创建了MainActivity
的一个新实例(不是您“来自”的实例),其中x=1
在MainActivity
中设置x
,例如,类似静态
并在MenuList.java
中使用它,如下所示:
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);
}
});
if(MainActivity.x == y)
{ ...
但是强>
考虑到Android的组件(更多信息),这并不是你在Android中应该做的事情。一旦系统销毁了MainActivity
,作为静态的x
总是=1
,除非MainActivity
的另一个实例改变了它
因此,您可以使用多个选项,其中一个选项是将
x
值存储在某个位置,例如在中。另一种方法是根据@VVJ的回答在Intent的中传递值。@Onik main是from:MainActivity main=new MainActivity()您正在调用value()方法,该方法返回int值,但您没有将返回值存储在任何位置。如果要将其存储在x中,则应调用类似“x=value()”的value方法。然后基于x,您可以执行您的操作。在安卓系统中,你不必这样做。您可以直接聆听特定按钮的单击并将任务分配给它