java - 根据用户选择的选项在另一个类中使用字符串

标签 java android

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

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

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

我怎样做才能在用户点击 Vegan 卡片时在我的 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;
}

最佳答案

您好,只需将 Extra 放入 intent 中,稍后在您的下一个 Activity 中提取它。不需要任何 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 Activity 中的字符串,请使用以下代码

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");
}

关于java - 根据用户选择的选项在另一个类中使用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078257/

相关文章:

java - Struts2 String[] 参数而不是 Long

java - On Void 返回类型

android - 使用espresso在android中自动化数字选择器

android - Android中如何解析SOAP?

android - 使用 Jackson 库进行 JSON 解析

android - ARCore - 在增强图像表面上播放 YouTube 视频

java - 由 : java. 引起 sql.SQLException: Column 'id' not found

java - 将 .jar 转换为适用于 Windows、Linux 和 Mac 的应用程序

java - 使用 Hazelcast 确保数据中心之间的复制

java - 添加计时器并设置大小到 viewpager