0

我正在 Android 上制作应用程序,但 EditText 和 TextViews 有问题。我有一个 EditText,用户在其中输入他的名字,用“确定”按钮保存它,然后在 3 个不同的 TextViews 中打印名称。例如,如果有 3 个用户 A、B 和 C,第一个 textview 将打印“A”,第二个 textview 将打印“B”,第三个将打印“C”。

我的问题是,如果用户输入 EditText“A”,三个 TextViews 将打印“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() != " ")但没有成功。

你能帮我吗 ?提前致谢。

编辑:

我意识到我在变量名称上犯了一些错误,对不起...

我试图根据您的解决方案对我的代码进行修改。新代码:

保存名称.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 个 TextView 已满。我不明白如何尊重第一个条件而不是空的?

谢谢你的帮助。

4

3 回答 3

0

首先,您已经将字符串与 != 运算符进行了比较,这不会像上面的答案所示那样起作用,并且他们建议了正确的答案。

第二件事是你必须为你想要做的事情创建一个逻辑意味着你试图在这 3 个文本视图上分割你的文本,所以如果你会设置

name1.setText(settings.getString("Nom", "").toString());
name2.setText(settings.getString("Nom", "").toString());
name3.setText(settings.getString("Nom", "").toString());

然后他们肯定会打印出相同的输出,因此当您希望将文本拆分为其他文本视图(例如将固定长度设置为 textview 或其他任何内容)时,您必须为此创建一个逻辑。

于 2013-10-31T12:09:49.270 回答
0

使用.equalsor.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());

所以发生的事情是值保持不变,所以你总是在所有 thre textviews 中获得新值

因此,您每次都需要使用不同的密钥进行保存,例如

 editor.putString("Nom1", nomrepete.getText().toString()); // Nom1 for first user
于 2013-10-31T11:07:58.793 回答
0

您只能使用equalsorcompare方法比较字符串。

name1.getText().toString().equals("")
于 2013-10-31T11:08:24.950 回答