2014-08-29 3 views
0

Я просто хочу начать работу в первом прогоне. Поэтому после того, как я запускаю его, он никогда не должен открываться снова. В эту деятельность добавляетсяЗапустить действие только при первом запуске

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

поэтому эта деятельность начинается с начала. У меня есть переменная, которая помогает мне решить, запускается ли это мероприятие в первый раз или нет (Im сохраняет его с помощью SharedPreferences, который называется sem_first_time). Когда он равен 0, то это первый раз, если нет, то это действие должно завершиться и начать другой. Вот мой код

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    SharedPreferences data = getSharedPreferences("datas",Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = data.edit(); 

    first_start = data.getInt("fstart", 0); 

    if (first_start == 1) 
    { 
     finish(); 
     Intent start = new Intent(this, Main.class); 
     startActivity(start); 
    } 

    setContentView(R.layout.first_start); 

Я получил кнопку, которая устанавливает first_start 1

public void create (View view) 
{ 
    SharedPreferences data = getSharedPreferences("datas",Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = data.edit(); 

    first_start = 1; 
    editor.putInt("fstart", first_start); 

    ... 
} 

Но когда я начинаю это приложение один раз он показывает эту активность снова ... Что не так?

+0

Узнайте о жизненном цикле деятельности: http://developer.android.com/training/basics/activity-lifecycle/starting.html –

+2

Вы совершили после того, как поместить значение в 'SharedPreferences'? editor.commit(); –

+0

Вот и все! Спасибо :) – user3339279

ответ

0

Это происходит потому, что это действие Launcher, и вы заканчиваете деятельность перед запуском другого действия. Это должно быть как

if (first_start == 1) 
{ 

    Intent start = new Intent(this, Main.class); 
    startActivity(start); 
    finish(); 
} 
+0

Я тоже пробовал это, но он не помогает – user3339279