我在Android上制作应用程序,我遇到了EditText和TextViews的问题。我有一个EditText,用户输入他的名字,用“Ok”按钮保存,然后在3个不同的TextView中打印名称。 例如,如果有3个用户A,B和C,则第一个textview将打印“A”,第二个textview将打印“B”,第三个将打印“C”。
我的问题是,如果用户输入EditText“A”,三个TextView将打印“A”,我希望如果第一个TextView已满,则名称将保存在第二个TextView中,如果第一个和第二个TextViews已满,文本保存在第三个。
我的代码: saveName.class
EditText name = (EditText) findViewById(R.id.name);
SharedPreferences settings = getSharedPreferences("MemberInfo",
0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("Nom", nomrepete.getText().toString());
editor.commit();
printName.class
TextView name1 = (TextView) findViewById(R.id.savedname);
TextView name2 = (TextView) findViewById(R.id.savedname2);
TextView name3 = (TextView) findViewById(R.id.savedname3);
SharedPreferences settings = getSharedPreferences("MemberInfo", 0);
name1.setText(settings.getString("Nom", "").toString());
nomsauve2.setText(settings.getString("Nom", "").toString());
nomsauve3.setText(settings.getString("Nom", "").toString());
我试图提出一些条件,如if,
(name1.getText().toString() != " " && name2.getText().toString() != " ")
但没有成功。
修改
我意识到我在变量名称中犯了一些错误,对不起......
我尝试根据您的解决方案对我的代码进行修改。新代码:
saveName.class
EditText nomrepete = (EditText) findViewById(R.id.nomrepete);
nomrepete.setVisibility(View.VISIBLE);
SharedPreferences settings = getSharedPreferences("MembreInfo",
0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("Nom1", nomrepete.getText().toString());
editor.putString("Nom2", nomrepete.getText().toString());
editor.putString("Nom3", nomrepete.getText().toString());
editor.commit();
printName.class
TextView nomsauve1 = (TextView) findViewById(R.id.savename);
TextView nomsauve2 = (TextView) findViewById(R.id.savename2);
TextView nomsauve3 = (TextView) findViewById(R.id.savename3);
SharedPreferences settings = getSharedPreferences("MembreInfo", 0);
if (nomsauve1.getText().toString().equals("")) {
nomsauve1.setText(settings.getString("Nom1", "").toString());
System.out.println("user1");
}
else if (!nomsauve1.getText().toString().equals("")) {
nomsauve2.setText(settings.getString("Nom2", "").toString());
System.out.println("user2");
}
else if (!nomsauve1.getText().toString().equals("")
&& !nomsauve2.getText().toString().equals("")) {
nomsauve3.setText(settings.getString("Nom3", "").toString());
System.out.println("user3");
}
但是,当我保存名称时,它总是保存在第一个TextView“nomsauve1”中。如果我把“if”而不是“else if”,则3个TextViews已满。我不明白第一个条件如何得到尊重而它不是空的?
感谢您的帮助。
答案 0 :(得分:0)
使用.equals
或.equalsIgnoreCase
来比较字符串
if (!name1.getText().toString().equals("") && !name2.getText().toString().eqauls(""))
编辑:
此外,您对所有文字视图设置相同
name1.setText(settings.getString("Nom", "").toString());
nomsauve2.setText(settings.getString("Nom", "").toString());
nomsauve3.setText(settings.getString("Nom", "").toString());
所以将其改为
name1.setText(settings.getString("Nom1", "").toString());
nomsauve2.setText(settings.getString("Nom2", "").toString());
nomsauve3.setText(settings.getString("Nom2", "").toString());
你需要从edittext
保存字符串 editor.putString("Nom", nomrepete.getText().toString());
所以会发生什么值,因此您总是在所有的三维文本视图中获取新值
所以你需要每次都用不同的密钥保存
editor.putString("Nom1", nomrepete.getText().toString()); // Nom1 for first user
答案 1 :(得分:0)
您只能将字符串与equals
或compare
方法进行比较。
name1.getText().toString().equals("")
答案 2 :(得分:0)
首先,你已经将字符串与!=运算符进行了比较,这不会像上面的答案所示那样有效,并且他们建议正确答案。
第二件事是你必须为你想要做的事情创建一个逻辑意味着你试图在这3个文本视图上分割文本,所以如果你要设置
name1.setText(settings.getString("Nom", "").toString());
name2.setText(settings.getString("Nom", "").toString());
name3.setText(settings.getString("Nom", "").toString());
然后肯定会打印相同的输出,所以当你想要将文本拆分为其他文本视图时,你必须为它创建一个逻辑,比如将修复长度设置为textview或其他任何东西。