gpt4 book ai didi

java - Intent Extra 不等于 if 语句中的值

转载 作者:行者123 更新时间:2023-12-02 03:41:43 25 4
gpt4 key购买 nike

这是我在这里发布的第一个问题,所以我希望我已经彻底、清楚地解释了我遇到的问题。任何/所有帮助将不胜感激。

这是我正在处理的 java 文件:

MainActivity.java

public class MainActivity extends AppCompatActivity {

ImageButton name1Button;
ImageButton name2Button;
ImageButton name3Button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // Layout contains 3 ImageButtons "@+id/imageButton1", "@+id/imageButton2" and "@+id/imageButton3"

name1Button = (ImageButton) findViewById(R.id.imageButton1);
name2Button = (ImageButton) findViewById(R.id.imageButton2);
name3Button = (ImageButton) findViewById(R.id.imageButton3);
}

public void onChangeScreen(View view) {
Intent changeScreenIntent = new Intent(this, SecondActivity.class);

if(view == name1Button) {
changeScreenIntent.putExtra("Name", "name1");
} else if (view == name2Button) {
changeScreenIntent.putExtra("Name", "name2");
} else if (view == name3Button) {
changeScreenIntent.putExtra("Name", "name3");
} else {
changeScreenIntent.putExtra("Name", "Other");
}
startActivity(changeScreenIntent);
}
}

SecondActivity.java

public class SecondActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout); //Contains a TextView "@+id/textViewName"

Intent myIntent = getIntent();
String strName = myIntent.getExtras().getString("Name"); //Set strName to the parsed name ("name1", "name2" or "name3")
TextView myTextView = (TextView) findViewById(R.id.textViewName);
myTextView.setText(strName); //Sets the name parsed to a TextView //Setting the texts of the displayed TextView "@+id/textViewName" to the value of strName. This CORRECTLY shows the parsed name.

if(strName == "name1") { // Never true, even though the value of strName is "name1"
//Do thing if certain button clicked
Toast.makeText(this, "You selected name1", Toast.LENGTH_SHORT).show();
} else {
//Do other thing if non-specified button clicked
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
}

其含义如下:

  • MainActivity 显示 3 个按钮。
  • 用户按下 3 个按钮中的 1 个,所有这些按钮都会调用 onChangeScreen
  • 根据使用 3 个按钮中的哪一个来调用 onChangeScreen,会将不同的值(字符串)传递给 SecondActivity。
  • 设置要传递给 SecondActivity 的字符串后(使用 if 语句和 changeScreenIntent.putExtra()),将调用第二个 Activity。
  • SecondActivity 显示一个文本框,该文本框设置为使用 .putExtra() 传递的值。
  • 然后使用 if 语句根据传递的字符串执行某些操作,这本质上是基于调用 SecondActivity 的按钮。

这就是问题出现的地方。比较传入 SecondActivity 的字符串的 if 语句“显然”不等于该字符串的值(但显示的 TextView 显示该字符串)。因此 if 语句中的代码(替换为 Toast)永远不会被使用。

最佳答案

始终用于比较字符串

if(strName.equals("name1"))
Toast.makeText(this, "You selected name1", Toast.LENGTH_SHORT).show();
} else {
//Do other thing if non-specified button clicked
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}

使用 equals() 而不是字符串的 == ......

享受编码......

关于java - Intent Extra 不等于 if 语句中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36771138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com