在另一个类中使用字符串,具体取决于用户选择的选项

时间:2019-01-07 16:32:08

标签: java android

我在应用程序的开头有一个菜单,允许用户选择特定的饮食类型,我想将其另存为字符串,以供其他类使用,以查找附近的餐馆,咖啡馆等。

例如,如果用户选择“ Vegan”卡,那么我希望能够在其他类别中使用“ Vegan”,但是如果它是“ Kosher”,则我想在其他类别中使用字符串“ kosher”。

我尝试创建一个DietChoice类来设置/获取饮食,但这没有用,因为我无法在我的HomeMenu类中创建一个MapsActivity对象。

我如何做到这一点,以便用户单击“素食主义者”卡时可以在MapsActivity类中使用字符串“ Vegan”?

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.view.View;

public class HomeMenu extends AppCompatActivity implements View.OnClickListener {

private CardView veganMenu,halalMenu,vegeterianMenu,kosherMenu;
private DietChoice diet;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_menu);
    getSupportActionBar().setDisplayShowHomeEnabled(true);



}

public void onClick(View v) {
    Intent intent = new Intent(this,Home.class)
    switch (v.getId()) {
        case R.id.vegan_menu:
            intent.putExtra("STRING_I_NEED", "vegan");
            startActivity(intent);
            break;
        case R.id.vegetarian_menu:
            intent.putExtra("STRING_I_NEED", "vegetarian");
            startActivity(intent);
            break;
        case R.id.halal_menu:
            intent.putExtra("STRING_I_NEED", "halal");
            startActivity(intent);      
            break;
        case R.id.kosher_menu:
            intent.putExtra("STRING_I_NEED", "kosher");
            startActivity(intent);      
            break;
}

1 个答案:

答案 0 :(得分:1)

您好,只需要放下意图,然后在下一个活动中将其提取即可。不需要任何Pojo。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.view.View;

public class HomeMenu extends AppCompatActivity implements View.OnClickListener {

private CardView veganMenu,halalMenu,vegeterianMenu,kosherMenu;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_menu);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    veganMenu = (CardView) findViewById(R.id.vegan_menu);
    halalMenu = (CardView) findViewById(R.id.vegetarian_menu);
    vegeterianMenu = (CardView) findViewById(R.id.halal_menu);
    kosherMenu = (CardView) findViewById(R.id.kosher_menu);

    veganMenu.setOnClickListener(this);
    halalMenu.setOnClickListener(this);
    vegeterianMenu.setOnClickListener(this);
    kosherMenu.setOnClickListener(this);
}

public void onClick(View v) {
    Intent intent = new Intent(this,Home.class)
    switch (v.getId()) {
        case R.id.vegan_menu:
            intent.putExtra("STRING_I_NEED", "vegan");
            startActivity(intent);
            break;
        case R.id.vegetarian_menu:
            intent.putExtra("STRING_I_NEED", "vegetarian");
            startActivity(intent);
            break;
        case R.id.halal_menu:
            intent.putExtra("STRING_I_NEED", "halal");
            startActivity(intent);      
            break;
        case R.id.kosher_menu:
            intent.putExtra("STRING_I_NEED", "kosher");
            startActivity(intent);      
            break;
    }
}
}

要在Home活动中检索字符串,请使用下面的代码

String newString;
if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        newString= null;
    } else {
        newString= extras.getString("STRING_I_NEED");
    }
} else {
    newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}