2016-03-31 4 views
2

Wenn meine Anwendung zum ersten Mal gestartet wird, möchte ich den Benutzer auf einen Konfigurationstyp von Zeichenfolge verweisen. Ich verwende dazu gemeinsame Einstellungen. Wenn der Benutzer die Anwendung zum ersten Mal ausführt, sollte die freigegebene Einstellungsdatei leer sein. Es prüft zunächst, ob dem Schlüssel "configured" ein boolescher Wert zugeordnet ist. Falls nicht, sollte es zu der Aktivität namens preferences umgeleitet werden. Es scheint jedoch einfach darüber hinweg zu "überspringen"; anstatt zu Mittag oder zum Frühstück zu gehen. Ich habe sogar versucht, die gemeinsamen Einstellungen ohne Erfolg zu löschen. Irgendeine Idee, was das Problem sein könnte?Gemeinsam genutzte Java/Android-Einstellungen - Keine Anweisung zum Korrigieren der Aktivität

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); 
     } 

    } 
} 

Vorlieben Aktivität

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(); 
       } 

     } 
    } 
} 

Thanks so much!

Antwort

1

Sie führen immer diesen Code:

 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); 
    } 

versuchen, eine else-Klausel, so etwas wie das Hinzufügen von:

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

Es scheint, Sie beginnen 2 Aktivitäten am onStart.

Nur eine "Rückkehr" auf dem ersten hinzufügen, wenn, wie folgt aus:

   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); 
       } 
Verwandte Themen