Android 将文本放在不同的文本视图中
我正在Android上制作一个应用程序,我在EditText和TextView方面有问题。我有一个EditText,用户在其中输入自己的名字,用“Ok”按钮保存,然后在3个不同的文本视图中打印名字。 例如,如果有3个用户A、B和C,第一个文本视图将打印“A”,第二个文本视图将打印“B”,第三个将打印“C” 我的问题是,如果用户输入EditText“A”,三个文本视图将打印“A”,我希望如果第一个文本视图是完整的,名称保存在第二个文本视图中,如果第一个和第二个文本视图是完整的,文本保存在第三个文本视图中 我的代码:saveName.classAndroid 将文本放在不同的文本视图中,android,string,textview,Android,String,Textview,我正在Android上制作一个应用程序,我在EditText和TextView方面有问题。我有一个EditText,用户在其中输入自己的名字,用“Ok”按钮保存,然后在3个不同的文本视图中打印名字。 例如,如果有3个用户A、B和C,第一个文本视图将打印“A”,第二个文本视图将打印“B”,第三个将打印“C” 我的问题是,如果用户输入EditText“A”,三个文本视图将打印“A”,我希望如果第一个文本视图是完整的,名称保存在第二个文本视图中,如果第一个和第二个文本视图是完整的,文本保存在第三个文本
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();
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());
printName.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();
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());
我试图设置一些条件,比如,(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();
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");
}
printName.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();
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");
}
但是,当我保存名称时,它总是保存在第一个文本视图“nomsauve1”中。如果我用“If”代替“else If”,则3个文本视图已满。我不明白第一个条件如何得到尊重,而它不是空的
谢谢您的帮助。使用
.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());
因此,所发生的是值持续存在,因此您总是在所有文本视图中获得新值
name1.setText(settings.getString("Nom", "").toString());
nomsauve2.setText(settings.getString("Nom", "").toString());
nomsauve3.setText(settings.getString("Nom", "").toString());
因此,每次都需要使用不同的键进行保存,如
editor.putString("Nom1", nomrepete.getText().toString()); // Nom1 for first user
只能使用
equals
或compare
方法比较字符串
name1.getText().toString().equals("")
首先,您将字符串与!=操作员,这将不会像上面的答案所显示的那样起作用,并且他们已经建议了正确的答案 第二件事是,你必须为你试图做的事情创建一个逻辑,这意味着你试图在这3个文本视图上分割你的文本,所以如果你要设置
name1.setText(settings.getString("Nom", "").toString());
name2.setText(settings.getString("Nom", "").toString());
name3.setText(settings.getString("Nom", "").toString());
然后,它们肯定会打印出相同的输出,因此当您希望将文本拆分为其他文本视图时,您必须为此创建一个逻辑,例如将固定长度设置为textview或任何其他内容。使用。
eqauls
来代替name1.getText().toString()!=“”
使用(!name1.getText().toString().equals(“”)