Dies ist meine erste Frage, die hier gepostet wird, also hoffe ich, dass ich das Problem, das ich gründlich und klar habe, erklärt habe. Jede/jede Hilfe würde sehr geschätzt werden.Intent Extra entspricht nicht seinem Wert in if-Anweisung
Hier sind die Java-Dateien arbeite ich an:
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();
}
}
}
Was damit gemeint ist, ist zu tun, wie folgt:
- MainActivity zeigt 3, aber Tonnen.
- Der Benutzer drückt 1 der 3 Tasten, die alle
onChangeScreen
aufrufen. - Abhängig davon, welche der 3 Schaltflächen zum Aufruf von
onChangeScreen
verwendet wurde, wird ein anderer Wert (String) an SecondActivity übergeben. - Nach dem Einstellen der Zeichenfolge SecondActivity übergeben werden (unter Verwendung einer if-Anweisung und
changeScreenIntent.putExtra()
wird die zweite Aktivität genannt. - SecondActivity ein einzelnes Textfeld angezeigt wird, die auf den Wert gesetzt wird Bestanden die
.putExtra()
verwenden. - eine if-Anweisung wird dann verwendet, einige Maßnahmen perfom basierend auf der String übergeben, die im wesentlichen auf dem basieren wird, um die SecondActivity genannt.
Dies ist, wo das Problem auftritt. die if-Anweisung die Zeichenfolge übergeben in SecondActivity Vergleich ist anscheinend nicht gleich dem Wert der Zeichenfolge (noch t er zeigte TextView
zeigt diesen String). Und so wird der Code (ersetzt durch einen Toast) innerhalb der if-Anweisung nie benutzt.
Haben Sie diese Methode 'onChangeScreen' über XML aufgerufen? –
Vergleichen Sie Zeichen mit Gleichheitszeichen, vergleichen Zeichen mit "==" .. – DAVIDBALAS1