2017-01-09 44 views
1

在我的应用程序中,我有一个设置Activity来选择应该仅在应用程序中第一次运行的语言,但它有时会在切换片段时显示。我如何让它只显示第一次运行?应用程序运行时首次运行活动正在显示

代码:MainActivity

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

    }else{ 
    ... start the normal mainactivity 
    } 

的firstTime温控功能:

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)之后的设置活动中;? – busted13

回答

0

你应该开始其他活动后写finish();。不要忘记更改preferences.getBoolean("RanBefore1", false);并使其等于true。我假设你在选择语言后希望它是真实的。 由于您未拨打finish();而启动。

+0

我从设置的活动返回到mainacitivity之后添加了它,并且将RanBefore1更改为false。 – busted13

相关问题