0

私のAndroidアプリケーションには、新しい動的スピナーをレイアウトに追加するボタンがあります。作成されたスピナーはすべて同じアレイを使用しています。

これまで機能していたことですが、作成したスピナーの数を保存して、アプリケーションを再起動した後に再作成できます。しかし、私は本当に各スピナーのselectedPositionをsharedPreferencesに保存したいと思っています。これは、ForceCloseDesasterで立ち往生している場所です...

私の理解では、すべてのスピナーは作成時にIDを取得するため、このIDで囲まれた位置を設定に保存できます。

だからこれは私がしたことです:

public void addSpinner(){

    LinearLayout AddLayout = (LinearLayout)findViewById(R.id.linearAddScroll);
    spinner = new Spinner(this);
    ArrayAdapter<?> adapt = ArrayAdapter.createFromResource(this,
            R.array.Filter, android.R.layout.simple_spinner_item);
    adapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapt);
    AddLayout.addView(spinner);
    }

これによりスピナーが作成されます。

public void onClick(View v) {
            addSpinner();


            int ID = 1000+x;
            spinner.setId(ID);
            Toast.makeText(MatReporterActivity.this,"ID" + ID, 5)
            .show();
            x++;
        }

IDを設定します。

これは、私がonCreateメソッドで行うことです。

x = settings.getInt("xsave", 1);
    for(y = 1; y < x; y++){
        addSpinner();

        int ID = 1000+y;
        Spinner s = (Spinner) findViewById(ID);

        String ys= Integer.toString(ID);
        Toast.makeText(MatReporterActivity.this,"ID" +ys, 5)
        .show();
        int yf = settings.getInt(ys, 1);
        s.setSelection(yf);
        }

そしてこのonStop():

SharedPreferences settings = PreferenceManager
            .getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = settings.edit();
    editor.putInt("xsave", x);
    for(y = 1; y < x; y++){
        int ID = 1000+y;
        Spinner s2= (Spinner) findViewById(ID);
        int possS = s2.getSelectedItemPosition();
        Toast.makeText(MatReporterActivity.this, "IDStop" + ID, 5)
        .show();
        String ys= Integer.toString(ID);
        editor.putInt(ys, possS);
    }

    editor.commit();
}

onCreateメソッドに論理的な問題があると思いますが、それを見つけることができません。また、動的に作成されたスピナーを設定して保存する方法について、Webでヘルプが見つかりませんでした。

だから多分誰かがアイデアを持っています。ありがとう。

4

1 に答える 1