2017-01-09 6 views
1

私のアプリケーションでは、初めてアクティビティを実行する言語を選択するアクティビティがありますが、フラグメントを切り替えるときに表示されることがあります。実行の最初の時間だけを表示するにはどうすればよいですか?アプリケーションの実行中に最初に実行されたアクティビティが表示されます

コード:MainActivity

 if (isFirstTime()) { 
     Intent myIntent; 
     myIntent = new Intent(this, Settings.class); 
     startActivity(myIntent); 

    }else{ 
    ... start the normal mainactivity 
    } 

FIRSTTIME fucntion:

private boolean isFirstTime() { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    boolean ranBefore = preferences.getBoolean("RanBefore1", false); 
    return !ranBefore; 
} 

設定アクティビティ:

private Spinner spinner; 
private Button button; 
private String lang=""; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    setContentView(R.layout.settings_layout); 
    findViewByID(); 
    setListeners(); 

} 

private void findViewByID() { 
    spinner = (Spinner) findViewById(R.id.spinner); 
    button = (Button) findViewById(R.id.button2); 
    ArrayAdapter adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.langs)); 



    spinner.setAdapter(adapter); 

} 

private void setListeners() { 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
      switch (position) { 
       case 0: 
        lang= "en"; 
        break; 
       case 1: 
        lang="fr"; 
        break; 
       case 2: 
        lang="ar"; 
        break; 
      }   } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 

    }); 


    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
      SharedPreferences.Editor editor = preferences.edit(); 
      editor.putBoolean("RanBefore1", true); 
      editor.apply(); 
      if(getLanguage()!=null&&!getLanguage().contains(lang)) { 
       setLanguage(lang); 

       Intent mainIntent = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(mainIntent); 
      }else { 

       Intent mainIntent = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(mainIntent); 
      } 

     } 
    }); 
} 
+0

完了したらアクティビティを終了する必要があります。私。新しいものを起動した後 –

+0

@TimCastelijnsだから、finish()を追加するだけです。 startActivity(mainIntent);を起動した後のSettingsアクティビティ – busted13

答えて

0

は、あなたが他の活動を開始した後finish();を記述する必要があります。 preferences.getBoolean("RanBefore1", false);を変更してtrueと同じにすることを忘れないでください。私はあなたが言語を選択した後にそれが真実であることを望んでいると仮定しています。 finish();に電話しなかったために開始されます。

+0

私はsettingdアクティビティからmainacitivityに戻り、RanBefore1をfalseに変更してから追加しました。 – busted13

関連する問題