我试图将用户输入从几个EditText
字段提取到另一个活动中。特别是,我想在应用程序的另一个活动中使用用户输入的团队名称。
所以,从这里接受输入:
并在此处使用:
如上图所示,当用户输入几个团队名称时,我已经成功实现了这一点,我正在处理getIntent().getExtras()
。
但是,如果用户点击了" Start Scorekeeper"按钮没有输入任何球队名称,我得到以下内容:
但是,我想设置" Team A"的默认团队名称。和" B队"。
我已尝试通过以下方式完成此操作(但尚无效):
TeamSelector.java :
public void onClick(View view) {
Intent i = new Intent(this, ScoreKeeper.class);
final EditText teamAInput = (EditText) findViewById(R.id.team_a_input);
String teamAName = teamAInput.getText().toString();
i.putExtra("teamA", teamAName);
final EditText teamBInput = (EditText) findViewById(R.id.team_b_input);
String teamBName = teamBInput.getText().toString();
i.putExtra("teamB", teamBName);
startActivity(i);
}
然后在我拿起意图时创建条件。
ScoreKeeper.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_score_keeper);
Bundle teamNames = getIntent().getExtras();
if(teamNames==null){
final TextView teamAText = (TextView) findViewById(R.id.teamAText);
teamAText.setText(getString(R.string.team_a_name));
final TextView teamBText = (TextView) findViewById(R.id.teamBText);
teamBText.setText(getString(R.string.team_b_name));
}
else {
String teamA = teamNames.getString("teamA");
final TextView teamAText = (TextView) findViewById(R.id.teamAText);
teamAText.setText(teamA);
String teamB = teamNames.getString("teamB");
final TextView teamBText = (TextView) findViewById(R.id.teamBText);
teamBText.setText(teamB);
}
}
我也尝试过编码XML中的默认字符串,这些字符串没有效果(为简洁起见,只包括一个团队):
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:padding="16dp"
android:text="@string/team_a_name"
android:id="@+id/teamAText"
android:textColor="@android:color/black"
android:textSize="14sp" />
当.getIntent().getExtras()
为空时,有没有办法有效地设置默认值?
答案 0 :(得分:1)
试试这个:
public void onClick(View view) {
Intent i = new Intent(this, ScoreKeeper.class);
final EditText teamAInput = (EditText) findViewById(R.id.team_a_input);
String teamAName = teamAInput.getText().toString();
if(teamAName.trim().equals("")) teamAName="Team A";
i.putExtra("teamA", teamAName);
final EditText teamBInput = (EditText) findViewById(R.id.team_b_input);
String teamBName = teamBInput.getText().toString();
if(teamBName.trim().equals("")) teamBName="Team B";
i.putExtra("teamB", teamBName);
startActivity(i);
}
答案 1 :(得分:1)
字符串不会为空,意图也不一定。字符串将是零长度字符串,您可以使用String.isEmpty()
进行测试。
答案 2 :(得分:1)
EditText中的String永远不会为空。它可以是空的但不是空的。
像这样的简单检查就可以了
DBCC checkident ('inspectionitem', reseed, 9990)
答案 3 :(得分:1)
尝试改变这一点:
teamAText.setText(getString(R.string.team_a_name));
teamBText.setText(getString(R.string.team_b_name));
到此:
teamAText.setText(R.string.team_a_name);
teamBText.setText(R.string.team_b_name);
这是因为getString需要int
作为参数而您的R.string.team_a_name
和R.string.team_b_name
是Strings
所以您不必转换它再次(他们不是ints
)。
我希望它会对你有所帮助!