2016-03-31 66 views
2

當我的應用程序第一次啓動時,我想引導用戶使用配置類型的字符串。我正在使用共享首選項來執行此操作。當用戶第一次運行應用程序時,共享首選項文件應該是空的。它首先檢查是否存在與「已配置」鍵相關的布爾值。如果不是,則應該重定向到名爲首選項的活動。然而,它似乎只是「跳過」這一點;而是指導午餐或早餐活動。我甚至嘗試清除共享偏好無濟於事。任何想法可能是什麼問題?Java/Android共享首選項 - 不指示正確的活動

launch_activity

import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 



import java.util.Calendar; 
import java.util.GregorianCalendar; 


public class launch_activity extends AppCompatActivity { 

// private PendingIntent pending; 

/*public void startAlarm() { 
    AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); 
    GregorianCalendar greg = new GregorianCalendar(); 
    Calendar now = Calendar.getInstance(); 
    greg.set(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH), 10, 30); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, greg.getTimeInMillis(), 1000 * 60 * 60 * 24, pending); 
}*/ 

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

     // set alarm 
     // Intent alarmIntent = new Intent(this, alarmReceiver.class); 
     // pending = PendingIntent.getBroadcast(launch_activity.this, 0, alarmIntent, 0); 
     // startAlarm(); 




    } 

    protected void onStart() { 
     super.onStart(); 
     SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 

     if((preferences.getBoolean("configured", false)) == false) { // app has not yet been set-up 
      Intent intent = new Intent(this, midamcorp.com.burgerkingapp.preferences.class); 
      intent.putExtra("setUp", true); 
      startActivity(intent); 
     } 
     Calendar cal = Calendar.getInstance(); 
     if(cal.get(Calendar.HOUR_OF_DAY) > 4 && (cal.get(Calendar.HOUR_OF_DAY) <= 10 && cal.get(Calendar.MINUTE) < 28)) 
     { 

      Intent intent = new Intent(this, breakfastHome.class); 
      startActivity(intent); 
     } else { 
      Intent intent = new Intent(this, lunchHome.class); 
      startActivity(intent); 
     } 
    } 

    protected void onResume() { 
     super.onResume(); 
     SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE); 

     if(!(preferences.getBoolean("configured", false))) { // app has not yet been set-up 
      Intent intent = new Intent(this, midamcorp.com.burgerkingapp.preferences.class); 
      intent.putExtra("setUp", true); 
      startActivity(intent); 
     } 
     Calendar cal = Calendar.getInstance(); 
     if(cal.get(Calendar.HOUR_OF_DAY) > 4 && (cal.get(Calendar.HOUR_OF_DAY) <= 10 && cal.get(Calendar.MINUTE) < 28)) 
     { 

      Intent intent = new Intent(this, breakfastHome.class); 
      startActivity(intent); 
     } else { 
      Intent intent = new Intent(this, lunchHome.class); 
      startActivity(intent); 
     } 

    } 
} 

喜好活動

import android.annotation.TargetApi; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.content.res.Configuration; 
import android.media.Ringtone; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.os.Build; 
import android.os.Bundle; 
import android.preference.ListPreference; 
import android.preference.Preference; 
import android.preference.PreferenceActivity; 
import android.support.v7.app.ActionBar; 
import android.preference.PreferenceFragment; 
import android.preference.PreferenceManager; 
import android.preference.RingtonePreference; 
import android.support.v7.app.AppCompatActivity; 
import android.text.TextUtils; 
import android.view.MenuItem; 
import android.support.v4.app.NavUtils; 
import android.view.View; 
import android.widget.Button; 
import android.widget.RadioButton; 
import android.widget.Toast; 

import java.util.List; 


public class preferences extends AppCompatActivity { 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.configure_icon: 

       Intent i = new Intent(this, preferences.class); 
       startActivity(i); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    private View.OnClickListener preferencesListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent; 
      switch (v.getId()) { 
       case R.id.back_button: 
        intent = new Intent(getBaseContext(), launch_activity.class); 
        startActivity(intent); 
        break; 
       case R.id.logoutButton: 
        SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE); 
        SharedPreferences.Editor editor = preferences.edit(); 
        editor.putBoolean("loggedIn", false); 
        editor.commit(); 
        intent = new Intent(preferences.this, launch_activity.class); 
        startActivity(intent); 
        break; 
       /* case R.id.changeButton: 
        intent = new Intent(preferences.this, login.class); 
        startActivity(intent); 
        break; */ 
      } 
     } 

     ; 
    }; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_preferences); 
     Button back = (Button) findViewById(R.id.back_button); 
     // Button change = (Button)findViewById(R.id.changeButton); 
     Button logout = (Button) findViewById(R.id.logoutButton); 

     back.setOnClickListener(preferencesListener); 
     // change.setOnClickListener(preferencesListener); 
     logout.setOnClickListener(preferencesListener); 

    } 

    public void onStart() { 
     super.onStart(); 
     Intent i = getIntent(); 
     SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     if (i.getBooleanExtra("setUp", false)) { // if app is starting for the first time set 


      editor.putBoolean("configured", true); 
      editor.commit(); 

     } else { 
      if (!(preferences.getBoolean("loggedIn", false))) { // user is not logged in, redirect 
       Intent intent = new Intent(this, login.class); 
       startActivity(intent); 
      } 

     } 
    } 

    public void onRadioButtonClicked(View view) { 
     SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     boolean isChecked = ((RadioButton) view).isChecked(); 

     switch (view.getId()) { 
      case R.id.radio_boards: 
       if (isChecked) { 
        editor.putInt("Location", 2); 
        editor.commit(); 
       } 
       break; 
      case R.id.radio_speciality: 
       if (isChecked) { 
        editor.putInt("Location", 3); 
        editor.commit(); 
       } 

     } 
    } 
} 

非常感謝!

回答

1

你總是在運行此代碼:

 Calendar cal = Calendar.getInstance(); 
    if(cal.get(Calendar.HOUR_OF_DAY) > 4 && (cal.get(Calendar.HOUR_OF_DAY) <= 10 && cal.get(Calendar.MINUTE) < 28)) 
    { 

     Intent intent = new Intent(this, breakfastHome.class); 
     startActivity(intent); 
    } else { 
     Intent intent = new Intent(this, lunchHome.class); 
     startActivity(intent); 
    } 

嘗試增加else子句,像這樣:

if((preferences.getBoolean("configured", false)) == false) { // app has not yet been set-up 
     Intent intent = new Intent(this, midamcorp.com.burgerkingapp.preferences.class); 
     intent.putExtra("setUp", true); 
     startActivity(intent); 
    } 
    else { 
     Calendar cal = Calendar.getInstance(); 
     if(cal.get(Calendar.HOUR_OF_DAY) > 4 && (cal.get(Calendar.HOUR_OF_DAY) <= 10 && cal.get(Calendar.MINUTE) < 28)) 
     { 

      Intent intent = new Intent(this, breakfastHome.class); 
      startActivity(intent); 
     } else { 
      Intent intent = new Intent(this, lunchHome.class); 
      startActivity(intent); 
     } 
    } 
2

看來你已經開始在在onStart 2個活動。

只需在您第一次添加了 「迴歸」 的話,像這樣:

   if((preferences.getBoolean("configured", false)) == false) { // app has not yet been set-up 
        Intent intent = new Intent(this, midamcorp.com.burgerkingapp.preferences.class); 
        intent.putExtra("setUp", true); 
        startActivity(intent); 
        return; //HERE---------------------------------- 
       } 
       Calendar cal = Calendar.getInstance(); 
       if(cal.get(Calendar.HOUR_OF_DAY) > 4 && (cal.get(Calendar.HOUR_OF_DAY) <= 10 && cal.get(Calendar.MINUTE) < 28)) 
       { 

        Intent intent = new Intent(this, breakfastHome.class); 
        startActivity(intent); 
       } else { 
        Intent intent = new Intent(this, lunchHome.class); 
        startActivity(intent); 
       }