Java 如何仅传递用户选择的字符串
当我单击一个按钮时,我需要该按钮只传递选定的字符串Java 如何仅传递用户选择的字符串,java,android,Java,Android,当我单击一个按钮时,我需要该按钮只传递选定的字符串 TruthOrDare1.putExtras(getIntent()); TruthOrDare2.putExtras(getIntent()); 如果整数是2,我尝试传递一个特定的字符串 TruthOrDare1.putExtras(getIntent()); TruthOrDare2.putExtras(getIntent()); 这是我的第一个名为PlayerChoose的活动: //PI1 and PI2 is String
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
如果整数是2,我尝试传递一个特定的字符串
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
这是我的第一个名为PlayerChoose的活动:
//PI1 and PI2 is Strings from another Activity.
PI1 = getIntent().getStringExtra("Player1Text");
PI2 = getIntent().getStringExtra("Player2Text");
//These bellow are buttons.
Player1Btn = findViewById(R.id.PlayerToD1);
Player2Btn = findViewById(R.id.PlayerToD2);
//These Integers is to set 0 so the app is not broken.
PlayerInt1 = 0;
PlayerInt2 = 0;
//Here im setting text to the buttons so you know what player you pick
Player1Btn.setText(PI1);
Player2Btn.setText(PI2);
//These button adds 1 to the Integer PlayerInt1 so if you hit it
//twice it executes what is in the if statement.
Player1Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PlayerInt1++;
if (PlayerInt1 == 2) {
Intent TruthOrDare1 = new Intent(PlayerChoose.this,TruthOrDare.class);
TruthOrDare1.putExtras(getIntent());
TruthOrDare1.putExtra("Player1Text", PI1);
startActivity(TruthOrDare1);
}
}
});
//Same button as Player1Btn Does the same things.
Player2Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PlayerInt2++;
if (PlayerInt2 == 2) {
Intent TruthOrDare2 = new Intent(PlayerChoose.this,TruthOrDare.class);
TruthOrDare2.putExtras(getIntent());
TruthOrDare2.putExtra("Player2Text", PI2);
startActivity(TruthOrDare2);
}
}
});
}
}
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
这是我的第二项活动,名为TruthOrDare:
//PI1 Should take what i passed with "Player1Text" and save it as a
//String
//PI2 Should take what i passed with "Player2Text" and save it as a
//String
PI1 = getIntent().getStringExtra("Player1Text");
PI2 = getIntent().getStringExtra("Player2Text");
//PlayerTurnName1 and PlayerTurnName2 is textviews
PlayerTurnName1 = findViewById(R.id.PlayerTurnText1);
PlayerTurnName2 = findViewById(R.id.PlayerTurnText2);
//Here i set text to textview whatever have been passes PI1 or PI2
//Depending
PlayerTurnName1.setText(PI1);
PlayerTurnName2.setText(PI2);
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
我的问题是,只有当我在PlayerChoose活动中点击Player1Btn时,它才能传递两个字符串PI1、PI2而不是PI1,如果我点击Player2Btn,它才能传递PI2。如果我点击Player1Btn,我怎么能只传递PI1,如果我点击PI2,它就传递PI2。似乎你有不必要的字符串
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
在click listeners中,它同时添加了PI1和PI2,因此在第一个名为PlayerChoose的活动中很简单,您可以创建另一个名为PIP1的字符串作为示例,因此您必须这样做:
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
//So Put PI1 as default string of PIP1.
PIP1 = PI1;
//Then in the Buttons OnClickListeners
Player1Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PlayerInt1++;
//If you click this button it will set PIP1 to the string you want to
//pass in this case PI1
PIP1 = PI1;
if (PlayerInt1 == 2) {
Intent TruthOrDare1 = new Intent(PlayerChoose.this, TruthOrDare.class);
TruthOrDare1.putExtras(getIntent());
//Intead of putting the text itself you put PIP1 thats changing
//depens on what button you click
TruthOrDare1.putExtra("PlayerText", PIP1);
startActivity(TruthOrDare1);
}
}
});
Player2Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PlayerInt2++;
//And here you Change the same string PIP1 to PI2
//Here you change the PIP1 to PI2 so PIP1 change to PI2 and not PI1
PIP1 = PI2;
if (PlayerInt2 == 2) {
Intent TruthOrDare2 = new Intent(PlayerChoose.this, TruthOrDare.class);
TruthOrDare2.putExtras(getIntent());
TruthOrDare2.putExtra("PlayerText", PIP1);
startActivity(TruthOrDare2);
}
}
});
在第二个名为TruthOrDare的活动中,您可以更改以下内容:
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());
//So you only have 1 String Instead of 2 with 1 key
PI1 = getIntent().getStringExtra("PlayerText");
//One TextView
PlayerTurnName1 = findViewById(R.id.PlayerTurnText1);
PlayerTurnName1.setText(PI1);
概念是每次按下按钮时PIP1都会改变,因此不会传递所有值。我可以知道,如果用户按下播放器1BTN的按钮,TextViewP2应该显示值?无论我按下1或2按钮,它都会将文本设置为PI2,我尝试添加3按钮,看看这是否是问题所在,它会设置为PI3,所以它只会设置为最后一个值,我不确定为什么这行:trutorDare2.putExtrasgetIntent;-当返回到第二个活动时,这会将Player1Text和Player2Text与文本字段文本一起放回到意图中,使用相同的键。如果他单击Player1Btn only pass PI1,我只想通过选择要通过的,如果他单击Player2Btn only pass PI2,我会找到另一种方法来做同样的事情,我会将其作为答案发布,但如果你有其他方法,你可以发布我有没有尝试过这种方法,只是删除不必要的代码?为什么这些代码是不必要的?我真的不知道我是从Youtube上学到的,所以我会像我看到的那样去做。我会使用我的代码,因为我需要传递其他类似的名称,但如果你确定我可以让你的问题是正确的,我会在将来阅读所有这些代码。我明白你的意思你的解决方案中有没有提到这一点。当你真的不知道发生了什么时,这是一个糟糕的方法。这两条线仍然没有必要。试着参考更多的文档,而不是从youtube视频中盲目复制代码。不管怎样,你能让你的应用程序正常工作真是太棒了!
TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());