Android 将文本放在不同的文本视图中

Android 将文本放在不同的文本视图中,android,string,textview,Android,String,Textview,我正在Android上制作一个应用程序,我在EditText和TextView方面有问题。我有一个EditText,用户在其中输入自己的名字,用“Ok”按钮保存,然后在3个不同的文本视图中打印名字。 例如,如果有3个用户A、B和C,第一个文本视图将打印“A”,第二个文本视图将打印“B”,第三个将打印“C” 我的问题是,如果用户输入EditText“A”,三个文本视图将打印“A”,我希望如果第一个文本视图是完整的,名称保存在第二个文本视图中,如果第一个和第二个文本视图是完整的,文本保存在第三个文本

我正在Android上制作一个应用程序,我在EditText和TextView方面有问题。我有一个EditText,用户在其中输入自己的名字,用“Ok”按钮保存,然后在3个不同的文本视图中打印名字。 例如,如果有3个用户A、B和C,第一个文本视图将打印“A”,第二个文本视图将打印“B”,第三个将打印“C”

我的问题是,如果用户输入EditText“A”,三个文本视图将打印“A”,我希望如果第一个文本视图是完整的,名称保存在第二个文本视图中,如果第一个和第二个文本视图是完整的,文本保存在第三个文本视图中

我的代码: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();
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(“”)