0

私はこの分野の Android の初心者であり、現在、カウンターと edittext のサブジェクト名を使用してバンクした期間の数を追跡するアプリケーションの開発を追求しており、カウンターの値はボタンとして増加し続けますbunked は毎回押され、その変更はテキストフィールドでそれぞれ影響を受けます。私のアプリにはアクティビティが 1 つしかなく、ユーザーが edittext にデータを入力し終えたとき、カウンターがインクリメントされると、textview の値もインクリメントされ、ユーザーがバックを押すとボタンを押してアプリを終了し、ユーザーがもう一度アプリに入ると、以前に入力したすべてのデータが失われます... edittext または textview のいずれにもデータがありません...

public class MainActivity extends Activity {

    public static final String sub1="sub";
    public static final String count1="Count";
    String sub[]=new String[10];
    String count[]=new String[10];
    int counter[]=new int[10];
    Button button[]=new Button[10];
    EditText et[]=new EditText[10];
    TextView tv[]=new TextView[12];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        button[0] = (Button) findViewById(R.id.button1);
        button[1] = (Button) findViewById(R.id.button2);
        button[2] = (Button) findViewById(R.id.button3);
        button[3] = (Button) findViewById(R.id.button4);
        button[4] = (Button) findViewById(R.id.button5);
        button[5] = (Button) findViewById(R.id.button6);
        button[6] = (Button) findViewById(R.id.button7);
        button[7] = (Button) findViewById(R.id.button8);
        button[8] = (Button) findViewById(R.id.button9);

        tv[0] = (TextView) findViewById(R.id.textView2);
        tv[1] = (TextView) findViewById(R.id.textView3);
        tv[2] = (TextView) findViewById(R.id.textView4);
        tv[3] = (TextView) findViewById(R.id.textView5);
        tv[4] = (TextView) findViewById(R.id.textView6);
        tv[5] = (TextView) findViewById(R.id.textView7);
        tv[6] = (TextView) findViewById(R.id.textView8);
        tv[7] = (TextView) findViewById(R.id.textView9);
        tv[8] = (TextView) findViewById(R.id.textView10);
        tv[9] = (TextView) findViewById(R.id.textView1);

        et[0] = (EditText) findViewById(R.id.editText1);
        et[1] = (EditText) findViewById(R.id.editText2);
        et[2] = (EditText) findViewById(R.id.editText3);
        et[3] = (EditText) findViewById(R.id.editText4);
        et[4] = (EditText) findViewById(R.id.editText5);
        et[5] = (EditText) findViewById(R.id.editText6);
        et[6] = (EditText) findViewById(R.id.editText7);
        et[7] = (EditText) findViewById(R.id.editText8);
        et[8] = (EditText) findViewById(R.id.editText9);

        for(int l=0;l<9;l++) {
            sub[l]=et[l].getText().toString();
            et[l].setText(sub[l]);
        }

        for (int j = 0; j < 9; j++) {
            button[j].setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                for(int k=0;k<9;k++) {
                    if(button[k]==arg0.findViewById(R.id.button1)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }           

                    if(button[k]==arg0.findViewById(R.id.button2)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }

                    if(button[k]==arg0.findViewById(R.id.button3)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                   

                    if(button[k]==arg0.findViewById(R.id.button4)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                   

                    if(button[k]==arg0.findViewById(R.id.button5)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                   

                    if(button[k]==arg0.findViewById(R.id.button6)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                   

                    if(button[k]==arg0.findViewById(R.id.button7)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                   

                    if(button[k]==arg0.findViewById(R.id.button8)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                   

                    if(button[k]==arg0.findViewById(R.id.button9)) {
                        counter[k]++;
                        tv[k].setText(""+counter[k]);
                    }                               
               }
          }
    });
  }
}

    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putString(sub1,sub[0]);
        savedInstanceState.putInt(count1, counter[0]);
        super.onSaveInstanceState(savedInstanceState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        sub[0]=savedInstanceState.getString(sub1);
        counter[0]=savedInstanceState.getInt(count1);
    }
}
4

1 に答える 1

0

これは、アプリの終了時にクリーンアップされるすべてのデータを配列に保存しているためです。これを行うにはいくつかの方法があります。SharedPreferences を使用してデータを保存するか、値をファイルに書き込むことができます。たとえば、次のように SharedPreferences を使用できます。

public static final String MY_PREF = "MyPreference";
SharedPreferences.Editor editorPref;
public static String keyName = "MyKey";
SharedPreferences myPref;

次に、共有設定を作成してそれに値を追加できます。

于 2013-07-10T10:25:14.493 に答える