2017-04-18 33 views
-6

アクティビティには2つのラジオボタンがあります。最初のボタンは名前Defaultと2番目のGreenです。ボタンGreenをクリックすると、すべてのアクティビティのすべてのテキストビューに背景色のGreenが表示され、Button Defaultをクリックすると、すべてのテキストビューがデフォルトの状態に戻ります。テキストビュー、背景色の変更

コード;

{ 



    super.onCreate(savedInstanceState); 

     setContentView(R.layout.settings2); 



    SharedPreferences preferences = 
    getSharedPreferences("AppPrefs" , 
    MODE_PRIVATE); 
    final SharedPreferences. Editor. 
     PrefsEditor = preferences.edit(); 
    final RelativeLayout root_layout= 
     (RelativeLayout) 
    findViewById(R.id.root_layout); 

    final TextView tv_text1 = (TextView) 
    findViewById(R.id.hym1t); 
    final TextView tv_text2 = (TextView)  
    findViewById(R.id.hym2t); 
    RadioGroup radioDate = ( 
     RadioGroup)  
     findViewById(R.id.radioGroup); 
    final RadioButton radio1 = ( 
     RadioButton) 
     findViewById(R.id.radio1); 
    RadioButton radio2 = (RadioButton)  
     findViewById(R.id.radio2); 


     radioDate.setOnCheckedChange 
     Listener 
    (new 
     RadioGroup.OnCheckedChange 
     Listener() 
     { 
      @Override 
      public void onCheckedChanged 
      (RadioGroup group, int.  
     checkedId) { 
       if (radio1.isChecked()) { 
     //set value 
        PrefsEditor.putString 
        ("RadioButtonSelected" , "1"  
    ); 


    findViews(mContext,root_layout, 1);//  
     root_layout is your xml root layout id 
       } 
       else   { 
    //set value 
        PrefsEditor.putString 
        ("RadioButtonSelected" , "2"  
    ); 


    findViews(mContext,root_layout, 2); 
    // root_layout is your xml root layout  
    id 
       } 
      } 
     }); 
    /*get value:*/ 
    String radioButtonSelected= 
    preferences.getStrin g 
    ("RadioButtonSelected" , "");} 



     public static void findViews(Context  
     context, View v, int flag){ 
     try { 
     if (v instanceof ViewGroup) { 
      ViewGroup vg = (ViewGroup) v; 
      for (int i = 0; i <    
     vg.getChildCount(); i++) { 
       View child = vg.getChildAt(i); 
    //you can recursively call this method 
       findViews(context, child); 
      } 
     } else if (v instanceof TextView) { 
     //do whatever you want ... 
      if (flag== 1) 
      { 
       v.setBackgroundResource 

     (R.drawable.favoff); 

      } 
      else { 
       v.setBackgroundResource 

       (R.drawable.favon); 
       } 
     } 
     } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

    private static void findViews(Context   
    context, View child) 
    { 
    // TODO: Implement this method 
    } 



    } 
+0

? – AbhayBohra

+0

これはあなたを助けるかもしれません:http://stackoverflow.com/questions/22044788/button-change-background-color-on-click –

答えて

0

private final Context mContext = MyActivity.this; 

SharedPreferences preferences = getSharedPreferences("AppPrefs", MODE_PRIVATE); 
SharedPreferences.Editor PrefsEditor = preferences.edit(); 
RelativeLayout root_layout= (RelativeLayout) findViewById(R.id.root_layout); 
TextView tv_text1 = (TextView) findViewById(R.id.tv_text1); 
TextView tv_text2 = (TextView) findViewById(R.id.tv_text2); 

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 
RadioButton radio1 = (RadioButton) findViewById(R.id.radio1); 
RadioButton radio2 = (RadioButton) findViewById(R.id.radio2); 

radioDate.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     if (radio1.isChecked()) { 
      //set value 
      PrefsEditor.putString("RadioButtonSelected", "1"); 

      findViews(mContext,root_layout,1);//root_layout is your xml root layout id 
     } 
     else 
     { 
      //set value 
      PrefsEditor.putString("RadioButtonSelected", "2"); 

      findViews(mContext,root_layout,2);//root_layout is your xml root layout id 
     } 
    } 
}); 


/*get value:*/ 
String radioButtonSelected=preferences.getString("RadioButtonSelected", ""); 

セットの背景色、これを試してください:あなたは今まで何をした

public static void findViews(Context context, View v,int flag){ 
try { 
     if (v instanceof ViewGroup) { 
      ViewGroup vg = (ViewGroup) v; 
      for (int i = 0; i < vg.getChildCount(); i++) { 
       View child = vg.getChildAt(i); 
       //you can recursively call this method 
       findViews(context, child) 
      } 
     } else if (v instanceof TextView) { 
      //do whatever you want ... 
      if(flag==1) 
      { 
       v.setBackgroundResource(R.color.blue);//set default color 
      } 
      else{ 
       v.setBackgroundResource(R.color.green);//set green color 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

ありがとう、しかし私は約20の活動でtextviewsのバックグラウンドを変更したいと思います。あなたが私の状態を共有の好みに保つ方法を私に示すことができればと感謝します。 –

+0

ありがとう、ちょっともう一つ、ルートレイアウトIDを –

+0

に設定して、自分のメールレイアウトにid root_layoutを設定して、それを使って – user2025187

関連する問題