在Java中从方法返回int值

在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

我的任务是在Android中制作一个简单的餐厅菜单应用程序。因此,主页由
食品
按钮和
饮料
按钮组成。如果单击
食品
按钮,食品菜单页面将出现。如果单击饮料按钮,将显示饮料菜单页面

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,您可以执行您的操作。在安卓系统中,你不必这样做。您可以直接聆听特定按钮的单击并将任务分配给它