-2

私のアクティビティには、スイッチボタンがあります。アプリがバックグラウンドから閉じられたときに、スイッチ ボタンの状態を維持したかったのです。

アプリがバックグラウンドにある場合、スイッチの状態は維持されますが、アプリがバックグラウンドからクリアされると、デフォルト (オフ) の状態に戻ります。

ここからプログラムを複製してみました。しかし、スイッチボタンの状態を維持することはまだできません。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    switch1 = (Switch) findViewById(R.id.switch1);

    SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyz", MODE_PRIVATE);
    switch1.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));


    switch1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (switch1.isChecked()) {

                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                editor.putBoolean("NameOfThingToSave", true);
                editor.apply();
                switch1.setChecked(true);

                AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
                // Setting Dialog Title
                alertDialog.setTitle("Download all the Product's PDF.");
                // Setting Icon to Dialog
                alertDialog.setIcon(R.drawable.pdf_alert_dialog);

                // Setting Positive "Yes" Button
                alertDialog.setPositiveButton("CANCEL",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                switch1.setChecked(false);
                                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                                editor.putBoolean("NameOfThingToSave", false);
                                editor.apply();

                                dialog.dismiss();
                            }
                        });
                // Setting Negative "NO" Button
                alertDialog.setNegativeButton("DOWNLOAD ALL ",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {

                                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                                editor.putBoolean("NameOfThingToSave", true);
                                editor.apply();

                                
                                AlertDialog.Builder alertDialog1 = new AlertDialog.Builder(context);
                                // Setting Dialog Title
                                alertDialog1.setTitle("Free storage Available:" + megAvailable1 + " MB");
                                alertDialog1.setMessage("File size to Download: POJO MB");
                                // Setting Icon to Dialog
                                alertDialog1.setIcon(R.drawable.pdf_alert_dialog);

                                alertDialog1.setPositiveButton("CANCEL",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog1, int which) {
                                                switch1.setChecked(false);
                                                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                                                editor.putBoolean("NameOfThingToSave", false);
                                                editor.apply();

                                                dialog1.dismiss();
                                            }
                                        });
                                // Setting Negative "NO" Button
                                alertDialog1.setNegativeButton("DOWNLOAD  ",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog1, int which) {

                                                getFeedDownload();

                                                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                                                editor.putBoolean("NameOfThingToSave", true);
                                                editor.apply();

                                            }

                                        });
                                alertDialog1.show();
                            }
                        });

                // Showing Alert Message
                alertDialog.show();
            } else {
            }
        }
    });

どこが間違っていますか?

4

3 に答える 3

1

おそらくeditor.commit()代わりに試してみてくださいeditor.apply()。それらの違いについては、この記事を参照してください。

于 2016-08-04T10:05:04.633 に答える
0

私がした間違いは、onResume でスイッチをオフにしたことです。 したがって、アプリを再起動するたびに、共有設定に関係なくスイッチがオフになります。

Downloads フォルダーに PDF がダウンロードされているかどうかを確認するチェックを追加しました。もしそうなら、私はスイッチをオンにし、そうでなければオフにします。

 @Override
public void onResume() {
    super.onResume();

    Call<List<Products>> listCall = mManager.getProductsService().getAllProducts();
    //execte for the call back (asynchronous).

    // Now we start to execute the call
    listCall.enqueue(new Callback<List<Products>>() {
        @Override
        public void onResponse(Response<List<Products>> response, Retrofit retrofit) {
            if (response.isSuccess()) {
                List<Products> productsList = response.body();

                for (int i = 0; i < productsList.size(); i++) {
                    Products products = productsList.get(i);
                    String links = (products.getFilePath());
                    String name = products.getFileID();
                    String link = links.replaceAll("\\\\", "");
                    Log.i("linkkkkkSettings", link);


                    File applictionFile = new File(Environment.getExternalStoragePublicDirectory(
                            Environment.DIRECTORY_DOWNLOADS) + "/" + name + ".pdf");
                    if (applictionFile != null && applictionFile.exists()) {

                        switch1.setChecked(bundle.getBoolean("ToggleButtonState", true));
                    } else {

                        switch1.setChecked(bundle.getBoolean("ToggleButtonState", false));
                    }


                }
            }
        }

        @Override
        public void onFailure(Throwable t) {

        }
    });


}
于 2016-08-05T08:40:51.200 に答える