2017-07-16 3 views
1

私は1ページで多くのボタンを使いたいと思います。そのページでボタンの1つをクリックするためにアンドロイド電話を使用するとそのページ、クリックされたボタンだけが赤色になり、アプリケーションを再度開くと、クリックされたボタンはまだ赤色になります。どうすればいいのか分かっている人は、教えてください。以下は私のコーディングです:再度ボタンをクリックする方法は、アプリケーションを再度開くと無効になります

<Button 
     android:text="Button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/button" /> 

    <Button 
     android:text="Button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/button2" /> 

    <Button 
     android:text="Button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/button3" /> 

    <Button 
     android:text="Button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/button4" /> 

これは私の主な活動のXMLです。

public class MainActivity extends AppCompatActivity { 
    Button button,button1,button2,button3; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button); 
    button1 = (Button) findViewById(R.id.button2); 
    button2 = (Button) findViewById(R.id.button3); 
    button3 = (Button) findViewById(R.id.button4); 

    if(button.isClickable()) { 


     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       button.setEnabled(false); 
       button.setBackgroundColor(Color.RED); 
       button1.setEnabled(false); 
       button2.setEnabled(false); 
       button3.setEnabled(false); 
      } 
     }); 
    } 
    if(button1.isClickable()) { 


     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       button.setEnabled(false); 
       button1.setBackgroundColor(Color.RED); 
       button1.setEnabled(false); 
       button2.setEnabled(false); 
       button3.setEnabled(false); 
      } 
     }); 
    } 
    if(button2.isClickable()) { 


     button2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       button.setEnabled(false); 
       button2.setBackgroundColor(Color.RED); 
       button1.setEnabled(false); 
       button2.setEnabled(false); 
       button3.setEnabled(false); 
      } 
     }); 
    } 
    if(button3.isClickable()) { 


     button3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       button.setEnabled(false); 
       button3.setBackgroundColor(Color.RED); 
       button1.setEnabled(false); 
       button2.setEnabled(false); 
       button3.setEnabled(false); 
      } 
     }); 
    } 
    Log.e("onCreate: ", "UniqueKey: " + getUniqueKey()); 
} 

public String getUniqueKey(){ 
    String android_id = Settings.Secure.getString(this.getContentResolver(), 
      Settings.Secure.ANDROID_ID); 
    return android_id; 
} 

} これは私の主な活動のJavaです。これは、すべてのAndroid携帯電話は、ボタンは無効と赤と、他のボタンは無効になりますクリックした後、ボタンを1回クリックし、アプリケーションを再度開くことができSharedPreferencesでボタンの状態保存のおかげ

+0

https://stackoverflow.com/questions/44962705/how-to-hide -views-for-always/44962743#44962743これはあなたを助けるでしょう –

+0

あなたはクリック可能にするために使用することができますvisiblityのリンクストアの状態 –

+0

私にコードを表示することができます、私は保存する方法を理解していません –

答えて

0

あり、そしてときアプリケーションをもう一度開き、環境設定の値を確認してレイアウトを読み込みます。

+0

私にコードを表示することができます、私は共有prederencesのボタンの状態を保存する方法を知っていない、 –

0

AndroidにSharedPreferencesというオプションがあります.Appleの任意の状態のインスタンスをメモリに保存してから設定から取得することができます。だから、ボタンIDをSharedPreferencesに保存してください。アプリケーションを開くときに、プリファレンスのボタンのIDを取得してから、必要なボタンを無効にして無効にしてください。

+0

は、コードを表示することができますか?ありがとう –

0
sharedPrefernces

共有好ましい例

1.store値:sharedPreferencesから

SharedPreferences preferences = this.getSharedPreferences("SoldiPreferences", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putBoolean("storevalue", false); 
editor.commit(); 

2.get値:あなたの活動のOnCreate関数で

SharedPreferences preferences = this.getSharedPreferences("SoldiPreferences", Context.MODE_PRIVATE); 
    preferences.getBoolean("storevalue", false); 

    if(preferences.getBoolean("storevalue", false)) 
    { 
    button.setclickable(true); 
    button.setenable(true); 
    } 
    else{ 
    button.setclickable(false); 
    button.setenable(false); 
} 
  • onButtonCLikListner更新sharefpreffernceの値

    最終ボタンボタン=新しいボタン(これ)。 button.setOnClickListener(新View.OnClickListener(){@Override ます。public void onClickの(ビューV){

      SharedPreferences preferences = getApplicationContext().getSharedPreferences("SoldiPreferences", Context.MODE_PRIVATE); 
          SharedPreferences.Editor editor = preferences.edit(); 
    
          if(preferences.getBoolean("storevalue", false)) 
          { 
    
    
           editor.putBoolean("storevalue", false); 
           editor.commit(); 
          } 
          else{ 
    
           editor.putBoolean("storevalue", true); 
           editor.commit(); 
          } 
    
          button.setclickable(true); 
          button.setenable(true); 
    
    
    
         } 
        }); 
    
  • +0

    大丈夫、ありがとうu –

    +0

    それはあなたの問題を解決する場合、それを受け入れる答えthnx –

    +0

    私はoncreateに入れて、上記の2つのコードを聞きたいですか? onclickに1つ入れてもらえますか? –

    関連する問題