2013-07-11 2 views
0

안녕하세요, 나는 모든 간격 시간 동안 실행되는 응용 프로그램을 개발하려고하는데, 1 분마다 그것이 Toast message을 표시합니다.Android에서 RadioButton의 상태를 유지하는 방법은 무엇입니까?

하지만 문제는 내가 RadioButton 기능을 사용하고 있지만 하나의 라디오 버튼을 탭하면 초록색이됩니다. 그러나 닫은 후 다시 열면 선택한 라디오 버튼이 없어집니다.

가 여기 내 MainActivity.java

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void onRadioButtonClicked(View view) { 
    // Is the button now checked? 
    boolean checked = ((RadioButton) view).isChecked(); 

    // Check which radio button was clicked 
    switch(view.getId()) { 
     case R.id.radio_one_min: 
      if (checked) 
      { 
       //some code 
      } 
      break; 
     case R.id.radio_ten_min: 
      if (checked) 
      { 
       //some code 
      } 
      break; 

     case R.id.radio_disable: 
      if (checked) 
      { 
       //some code 
      } 
      break; 
    } 
} 
} 

이며, 여기 내 activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:id="@+id/radio"> 
<RadioButton android:id="@+id/radio_disable" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Disable" 
    android:onClick="onRadioButtonClicked"/> 
<RadioButton android:id="@+id/radio_one_min" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="1 minute" 
    android:onClick="onRadioButtonClicked"/> 
<RadioButton android:id="@+id/radio_ten_min" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="10 minute" 
    android:onClick="onRadioButtonClicked"/> 
</RadioGroup> 

날이 수수께끼를 해결하는 데 도움이 바랍니다. 내 첫번째 추측은 Bundleson Save/Resume Instace State 방법을 사용 그래서

내가 먼저 developer.android.com/training/basics/activity-lifecycle/recreating.html 문서를 발견

+1

를 내가이 http://stackoverflow.com/questions/151777/saving-activity-state-in-android?rq 상대라고 생각합니다 = 1 –

+0

@Bhavin Nattar하지만'onSaveInstanceState'와'onRestoreInstanceState'를 사용하여'RadioButton' 상태를 저장하는 법. –

+0

@ChethanShetty : 답변을 게시했습니다. .. –

답변

1

이 코드는 저장합니다 ratingbar 상태에 유용 우리는 새로운 활동을 시작할 때, 당신은 이전의 등급 상태를 볼 수 있습니다 ..

package com.example.ratingbar; 

import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.app.Activity; 
import android.content.SharedPreferences; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.RatingBar; 
import android.widget.RatingBar.OnRatingBarChangeListener; 
import android.widget.TextView; 
import android.widget.Toast; 

public class RatingbarMainActivity extends Activity { 

RatingBar ratingbarClick; 
Button sub_btn; 
TextView textRatingView , textRatingViewSave; 
Boolean val = true; 
float ans = (float) 0.0; 
//-------------------------------------------------------------------------------------------- 
@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_ratingbar_main); 

    ratingbarClick = (RatingBar) findViewById(R.id.ratingBar1); 
    ratingbarClick.setOnRatingBarChangeListener(rateObj); 


    SharedPreferences sharePref = PreferenceManager.getDefaultSharedPreferences 
      (RatingbarMainActivity.this); 

    ans = sharePref.getFloat("Get_Rating", 0.0f); 
    System.out.println("--------------------------------------ans = " + ans); 
    if(val) { 
     ratingbarClick.setRating(ans); 
    } 
    else { 
     ratingbarClick.setRating(ans); 
    } 

    textRatingView = (TextView) findViewById(R.id.ratingView); 


} 

//-------------------------------------------------------------------------------------------- 
//-------------------------------------------------------------------------------------------- 

    RatingBar.OnRatingBarChangeListener rateObj = new RatingBar.OnRatingBarChangeListener() { 

     @Override 
     public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) { 

      //textRatingView.setText(String.valueOf(rating)); 
      ans = ratingbarClick.getRating(); 

      SharedPreferences sharePref = PreferenceManager.getDefaultSharedPreferences 
          (RatingbarMainActivity.this); 
      SharedPreferences.Editor edit = sharePref.edit(); 
      edit.putFloat("Get_Rating", ans); 
      edit.commit(); 
      val = false; 

     } 
    }; 


//-------------------------------------------------------------------------------------------- 

    } 

--------------------------------------------------------------------------------------------------- 
    activity_ratingbar_main.xml file 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/ratingBar1" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="15dp" 
    android:layout_marginTop="23dp" 
    android:text="Select Your Rating Bar Here" 
    tools:context=".RatingbarMainActivity" /> 

<RatingBar 
    android:id="@+id/ratingBar1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="21dp" 
    android:layout_marginTop="63dp" /> 


<TextView 
    android:id="@+id/ratingView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/ratingBar1" 
    android:text="TextView" /> 

<Button 
    android:id="@+id/button1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:text="Click To Save Rating In TextBox" /> 

</RelativeLayout> 
0

[EDITED] 미리

감사합니다 .... 그러나 이것은 잘 작동하지 않는 것 같습니다.

여기 (일부 사용자에 의해 제안, SharedPreferences 클래스를 사용하여) 작업 솔루션에서 내 마지막 시도입니다 :

import android.app.Activity; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.RadioButton; 

public class MainActivity extends Activity { 

final String PREFERENCES = "prefs"; 
final String RADIO_BUTTON = "prefsval"; 

SharedPreferences sp; 
Editor e; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    sp = this.getSharedPreferences(PREFERENCES, MODE_PRIVATE); 
    e = sp.edit(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    if (sp != null) { 
     if (sp.getInt(RADIO_BUTTON, 0) != 0) { 
      RadioButton rb; 
      rb = (RadioButton) findViewById(sp.getInt(RADIO_BUTTON, 0)); 
      rb.setChecked(true); 
     } 
    } 
} 

public void onRadioButtonClicked(View view) { 
    e.putInt(RADIO_BUTTON, view.getId()); 
    e.apply(); 
} 
} 
+0

답장을 보내 주셔서 감사합니다.하지만 불행히도 @Vlad K. –

+0

@ChethanShetty가 수정되었습니다. 지금 대답해야합니다. –

+0

여러분의 소중한 시간 내 주셔서 감사합니다,하지만 불행히도 작동하지 않습니다. –

1

그렇게 할 수있는 간단한 방법은, 잠시 혼란스러워합니다 all.you에서 sharedpreference 필요 없음입니다 이

public class MainActivity extends Activity { 
Public static int flag=0; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
if(flag==1) 
radio_one_min.setChecked(true); 
else if(flag==2) 
radio_ten_min.setCheckek(true); 
else if(flag==3) 
radio_disable.setCheckek(true); 

같은 간단한 일을} 마고 사용하는

public void onRadioButtonClicked(View view) { 
// Is the button now checked? 
boolean checked = ((RadioButton) view).isChecked(); 

// Check which radio button was clicked 
switch(view.getId()) { 
    case R.id.radio_one_min: 
     if (checked) 
     { 
flag =1; 
      //some code 
     } 
     break; 
    case R.id.radio_ten_min: 
     if (checked) 
     { 
    flag=2 ;    
//some code 
     } 
     break; 

    case R.id.radio_disable: 
     if (checked) 
     { 
flag=3; 
      //some code 
     } 
     break; 
} 
} 
} 
+1

친구가 작동하지 않습니다. 게시하기 전에 이미 시도했습니다. –

+0

@ChethanShetty이 만든 플래그가 정적, static..i 당신이 그것을 me..just 근무 그래서 –

+0

@ChethanShetty 당신이 플래그를 user123 친구 @ 정적 변수 –

관련 문제