0

リストにチェックボックスを含む2つのアクティビティがあり、チェックボックスの各値を別のアクティビティに渡してチェックする必要があります。両方のアクティビティが隣にないため、インテントを使用してそれを渡すことはできません。

この場合、値を配列に保存し、別のアクティビティで取得する方法

すべてのおかげで、私は今それをやったので、投稿しています。

         int i = 0;
        checkBox = new CheckBox[getItemPR.size()];
        Constants.INDEX_TEMP_NEW=new int[getItemPR.size()];// stoing in array[]
        while (i < getItemPR.size()) {

            ITEM dtItem = getItemPR.get(i);

            TableLayout table11;
                table11 = (TableLayout) LayoutInflater.from(this).inflate(
                        R.layout.itemoverview2, null);
                checkBox[i] = (CheckBox) table11.findViewById(R.id.checkBox1);

                checkBox[i].setId(i);
                checkBox[i]
                        .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                            @Override
                            public void onCheckedChanged(
                                    CompoundButton buttonView,
                                    boolean isChecked) {

                            onSetcheckboxchanged(buttonView.getId());                               
                            }

                        });
                if (Constants.INDEX_TEMP_NEW[i] == 0) {
                    checkBox[i].setChecked(true);

                } else {
                    checkBox[i].setChecked(false);
                }

    public void onSetcheckboxchanged(int k) {

        if (checkBox[k].isChecked()) {              
            Constants.INDEX_TEMP_NEW[k] = 0;

        } else {
            Constants.INDEX_TEMP_NEW[k] = 1;
        }       
}
4

3 に答える 3

1

Application クラスに拡張される Java クラスを 1 つ作成し、 App.getInstance()を呼び出してそのクラスのオブジェクトを取得すると、任意のアクティビティから選択したリスト項目を設定または取得できます。

public class App extends android.app.Application {
private static App app;
private ArrayList<Integer> checkedItemList;
private Activity activity;

@Override
public void onCreate() {
    super.onCreate();
    app = this;
}

public static App getInstance(){
    return app;
}

public void setCheckedItemList(ArrayList<Integer> checkedItemList){
    this.checkedItemList = checkedItemList;
}

public ArrayList<Integer> getCheckedItemList(){
    return this.checkedItemList;
}
}

Android Manifest.xml のapplication タグの下に Application クラスを登録します。

<application
    android:name=".App"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".YourActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
于 2013-02-27T12:06:41.767 に答える
1

私は通常、この種のものに静的クラス/メソッドを使用します。SharedPreferences

public static class Hal {
    private static final String PREFS   = "com.xxx.xxx.xxx";

    public static String getPreferenceString(Context ctx, String key) {
        SharedPreferences sharedPreferences = ctx.getSharedPreferences(Hal.PREFS, Activity.MODE_PRIVATE);
        return sharedPreferences.getString(key, "");
    }

    public static void setPreferenceString(Context ctx, String key, String val) {
        SharedPreferences sharedPreferences = ctx.getSharedPreferences(Hal.PREFS, Activity.MODE_PRIVATE);
        Editor preferencesEditor = sharedPreferences.edit();
        preferencesEditor.putString(key, val);
        preferencesEditor.commit();
        return;
    }
}
于 2013-02-27T11:53:16.750 に答える
1

配列の値を格納するシングルトン クラスを作成できます。例えば。「ストレージ」クラスには、配列のゲッター、セッターがあります。クラスでここにデータを設定できます。

public class Storage { 
private static Strorage strorageData = new Strorage ();
public static synchronized Strorage getInstance() {
        if (strorageData == null) {
            strorageData = new Strorage ();
        }
        return strorageData ;
    }
    // getter & setter

}

アクティビティでは、次を使用してこのクラスのオブジェクトにアクセスできます

     private Storage storageData;
 storageData = Storage .getInstance();

ここで getter を使用してデータを取得します。

于 2013-02-27T11:59:08.977 に答える