0

Android でアプリケーションを作成していますが、EditText と TextViews に問題があります。ユーザーが自分の名前を入力し、「OK」ボタンで保存すると、名前が3つの異なるTextViewに出力されるEditTextがあります。たとえば、A、B、C の 3 人のユーザーがいる場合、1 番目の textview は「A」を出力し、2 番目の textview は「B」を出力し、3 番目の textview は「C」を出力します。

私の問題は、ユーザーが EditText "A" を入力すると、3 つの TextView が "A" を出力し、最初の TextView がいっぱいの場合、名前が 2 番目の TextView に保存され、1 番目と 2 番目の TextView がfull の場合、テキストは 3 番目のテキストに保存されます。

私のコード: 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" に保存されます。「else if」の代わりに「if」を入れると、3 つの TextView がいっぱいになります。最初の条件が空ではないのに、どのように尊重されるのかわかりませんか?

ご協力いただきありがとうございます。

4

3 に答える 3

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());

したがって、値が保持されるため、3 つのテキストビューすべてで常に新しい値を取得できます。

したがって、毎回異なるキーで保存する必要があります

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

equalsまたはcompareメソッドでのみ文字列を比較できます。

name1.getText().toString().equals("")
于 2013-10-31T11:08:24.950 に答える
0

最初のことは、文字列を != 演算子と比較したことです。これは、上記の回答が示すように機能せず、正しい回答が提案されています。

2 つ目は、しようとしていることのロジックを作成する必要があるということです。これは、これらの 3 つのテキストビューでテキストを分割しようとしていることを意味します。

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

その後、間違いなく同じ出力が出力されるため、テキストビューなどに固定長を設定するなど、テキストを他のテキストビューに分割する場合は、そのためのロジックを作成する必要があります。

于 2013-10-31T12:09:49.270 に答える