2014-05-15 47 views
0

我有一個活動CheckBox & a Button。我用SharedPreferences來保存複選框的值。Android:if else聲明不起作用複選框

該按鈕保存複選框的值並打開另一個活動。複選框的文本將更好地解釋它。

check.setText("Show This Page On Start"); 

如果複選框被選中,本次活動將在開始&如果不是,它會打開另一個活動中。

當我使用這個,應用程序的力量關閉。

if (sharedPreferences.getBoolean("check_box_value", "false")) 

    { //launch another activity 
    } 
    else 
    { 
// do nothing 
} 
+0

什麼是確切的問題?你遇到什麼讓你覺得如果 - 否則不起作用? – rekaszeru

+2

你爲什麼給字符串假? –

+1

你可以發佈錯誤/ logcat嗎? – ViVekH

回答

2
// Try this way,hope this will help you... 

**activity_main.xml** 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="5dp" > 

    <CheckBox 
     android:id="@+id/chkShowThisPage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Show This Page On Start" 
     android:checked="true"/> 

    <Button 
     android:id="@+id/btnGetCheckBoxValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout 

**MainActivity.java** 

public class MainActivity extends Activity{ 

    private CheckBox chkShowThisPage; 
    private Button btnGetCheckBoxValue; 
    SharedPreferences sharedPreferences; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     chkShowThisPage = (CheckBox) findViewById(R.id.chkShowThisPage); 
     btnGetCheckBoxValue = (Button) findViewById(R.id.btnGetCheckBoxValue); 
     sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE); 
     if(!sharedPreferences.getBoolean("showThisPage",true)){ 
      Intent intent = new Intent(this,YourAnotherActivity.class); 
      startActivity(intent); 
      finish(); 
     } 


     btnGetCheckBoxValue.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putBoolean("showThisPage",chkShowThisPage.isChecked()); 
       editor.commit(); 
       Intent intent = new Intent(MainActivity.this,YourAnotherActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
    } 
} 
+0

這就像一個魅力,thnx Haresh你的幫助。 –

+0

@ RashedLone,很高興幫助你,能否請你upvote如果對你有用,謝謝。 –

+0

是的,當然。 Thnx再次!!! –

1
if (sharedPreferences.getBoolean("check_box_value", false)) 

    { //launch another activity 
    } 
    else 
    { 
// do nothing 
} 

這是訪問一個布爾值

0

你傳遞一個字符串作爲,如果它不設置SharedPreference使用默認值的正確方法,這可能會導致您的應用程序到FC。

試着寫你的病情傳遞一個布爾值默認:(見代碼中的「假」,其意思是,這是你需要不「通假字符串」)

if (sharedPreferences.getBoolean("check_box_value", false) 
    {...} 
+0

是的,我在這裏犯了一個錯誤,它在我的代碼中實際上是'false'而不是'false''。 –

+0

請分享您的logcat輸出,瞭解您遇到的錯誤,以便我們對問題有更深入的瞭解。 – rekaszeru

+0

如果條件正確,那麼應用程序會嘗試啓動一個或另一個活動。你有沒有在你的androidManifest.xml中聲明它們? – rekaszeru

1

你逝去的getBoolean串這不是正確的方法。這樣做

boolean isChecked = sharedPreferences.getBoolean("check_box_value", false) 

if (isChecked) 
{ 
    //launch another activity 
} 
else 
{ 
    // do nothing 
}