2016-03-31 4 views
2

初めてアプリケーションを起動するときに、ユーザーにstringの設定タイプを指示したいと思います。私はそうするために共通の環境設定を使用しています。ユーザーが最初にアプリケーションを実行するときは、共有設定ファイルは空でなければなりません。最初に、「設定済み」キーに関連付けられたブール値があるかどうかを確認します。そうでない場合は、プリファレンスと呼ばれるアクティビティーにリダイレクトされます。しかし、これを単にスキップするだけのようです。代わりにランチまたは朝食活動のいずれかに指示します。私は共有の設定を無駄にクリアしようとしました。どのような問題が起こる可能性がありますか?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

あなたは、常にこのコードを実行している: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); 
    } 

てみてください、このような何か:

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); 
       } 
関連する問題