2017-05-31 10 views
0

私はすべてのタスクのトグルボタンを作成するバケットリストアプリケーションを作成していますので、ボタンを押すと状態が「偽」から「真」に変わりますが、状態を保存して変更しないでくださいアプリを再起動したら? 1つのボタンでうまくいきましたが、リストビューに接続されているすべてのToggleボタンでどのように動作させることができますか?再起動後にトグルボタンの状態を無制限に保存する方法はありますか?

public class MainActivity extends AppCompatActivity { 
private TaskDbHelper mHelper; 
private ListView mTaskListView; 
private ArrayAdapter<String> mAdapter; 
SharedPreferences sp; 
@Override 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mHelper = new TaskDbHelper(this); 
    updateUI(); 
    LayoutInflater myinflater = getLayoutInflater(); 
    View myview = myinflater.inflate(R.layout.item_todo, (ViewGroup) findViewById(R.id.lld),false); 
    ToggleButton togglebut = (ToggleButton) myview.findViewById(R.id.toggleButton); 
    sp = getSharedPreferences("sp",MainActivity.MODE_PRIVATE); 

             if (sp.getString("sp","").equals("0")){ 
              togglebut.setChecked(true); 
             } else if (sp.getString("sp","").equals("1")){ 
              togglebut.setChecked(false); 
             } 

             if (togglebut.isChecked()){ 
              sp.edit().putString("sp","0").apply(); 
             } else {sp.edit().putString("sp","0").apply(); 
             } 


    togglebut.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      sp = getSharedPreferences("sp",MainActivity.MODE_PRIVATE); 
      if (isChecked){ 
       sp.edit().putString("sp","0").apply(); 
      } else { 
       sp.edit().putString("sp","1").apply(); 
      } 
              } 
             }); 
    } 
+0

なぜないタスクが定義されているデータベースでは?そこに「完了」の列がある可能性があります。 – RobCo

答えて

0

ボタンの状態を保持するためにSharedPreferenceを作成できます。

これはOnCreate関数を上回っ:

SharedPreference sp; 

これはOnCreateイベントに行く:

sp = getSharedPreferences("sp",Activity.MODE_PRIVATE); 
    String newsp = noise.getString("sp",""); 
    int spnum; 
    try{ 
     spnum = Integer.parseInt(newsp); 
    }catch (NumberFormatException e) { 
     spnum = 0; 
    } 
    sp.edit().putString("sp",Integer.toString(spnum)).apply(); 

    ToggleButton togglebut = (ToggleButton) findViewById(R.id.togglebut); 


     if (sp.getString("sp","").equals("0")){ 
      togglebut.setChecked(true); 
     } else if (sp.getString("sp","").equals("1")){ 
      togglebut.setChecked(false); 
      } 

     if (togglebut.isChecked()){ 
      sp.edit().putString("sp","0").apply(); 
     } else {sp.edit().putString("sp","0").apply(); 
      } 


     togglebut.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

        sp = getSharedPreferences("sp",Activity.MODE_PRIVATE); 
        if (isChecked){ 
         sp.edit().putString("sp","0").apply(); 
        } else { 
         sp.edit().putString("sp","1").apply(); 
        } 

       } 
      }); 
+0

あなたの時間のために非常にありがとう、私は何を間違ったのかわからない#createの後にこのコードを入れて名前を変更したが、エミュレータで起動するとクラッシュする。 :( –

+0

私はOnClickの終了を断念しました!!もしあなたがそれを直接コピーすれば、それはなぜ機能しなかったのですか?今すぐ編集します!@MuradAlburki –

+0

特定のトグル私のアプリでは、ユーザーがタスクを追加するたびにトグルボタンと削除ボタンが生成されるので、その2つだけのXMLがあります。作成してトグルボタンIDを変更した後にこのコードを試してみました。私はそれをデバッグしようとしましたが、ボタンの状態がヌル値になっています。再生されたトグルボタンにこのコードを使用する方法はありますか? –

関連する問題