2013-08-15 4 views
0

У меня проблема с потоком моих действий. Поток выглядит следующим образом:Убить Android-активность с главной темой

Splash -> MainMenu -> Launching -> Starting -> Instructions -> MagicPower 

так на активности MagicPower я хочу вернуться к MainMenu после некоторого сна() время! Проблема в том, что деятельность MainMenu не закончилась вообще и проявляется дважды в два раза. Как я могу решить эту проблему? Как я пытался в моем конце, как:

package com.app.imagic; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Typeface; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MagicPower extends Activity { 

/////////// 
private TextView lookme; 
private volatile boolean running=true; 
private int i; 
private TextView gone; 

/////////// 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_magic_power); 
    lookme=(TextView)findViewById(R.id.LOOK); 
    lookme.setVisibility(View.INVISIBLE); 
    gone=(TextView)findViewById(R.id.GONE); 
    gone.setVisibility(View.INVISIBLE); 


    Typeface face=Typeface.createFromAsset(getAssets(), "fonts/crazy.TTF"); 
    gone.setTypeface(face); 
    lookme.setTypeface(face); 


    ////////////////////////////////////////////////////////// 
    runThread(); 
} 
    ////////////////////////////////////////////////////////////// 
    private void runThread() { 
new Thread() { 
    public void run() { 
     while(running){ 
      while (i++ < 4) { 

       if(i==3){ 

        Intent intent = new Intent(getApplicationContext(), MainMenu.class); 
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

        startActivity(intent); 
        startActivity(new Intent(MagicPower.this,MainMenu.class)); 

        running=false; 
        finish(); 
        break; 
        } 
       try { 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          if(i==1){ 
           lookme.setVisibility(View.VISIBLE); 
           } 

          if(i==2){ 
           gone.setVisibility(View.VISIBLE); 
           } 


         } 
         }); 
        Thread.sleep(2500); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
         return; 
         } 
       } 
      } 
     } 
    }.start(); 
    } 
    /////////////////////////////////////////////////////////////////// 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.magic_power, menu); 
    return true; 
} 
@Override 
public void onBackPressed() { 
    // do nothing. 
} 

}

Это должно быть, как после MainMenu; активность MainMenu больше не должна появляться на экране! Пожалуйста, помогите мне заблаговременно

+0

Я несколько предложений: 1. Вызвать 'послевкусие();' 4 раза в разных контекстах, чтобы вернуть вас в «MainMenu». 2. Назовите этот ключ KeyEvent k = new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); Activity.dispatchKeyEvent (k); '- это соответствует нажатой задней клавише, но это по сути то же самое, что и вызов' finish(); '. – g00dy

+0

Альтернатива всем этим - использовать флаг здесь -> http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP – g00dy

ответ

1

Посмотрите на этот код здесь:

if(i==3){ 
    Intent intent = new Intent(getApplicationContext(), MainMenu.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    startActivity(intent); 
    startActivity(new Intent(MagicPower.this,MainMenu.class)); 

    running=false; 
    finish(); 
    break; 
} 

Вы сами начинают MainMenu деятельность дважды. После того, как здесь:

Intent intent = new Intent(getApplicationContext(), MainMenu.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

startActivity(intent); 

А потом опять:

startActivity(new Intent(MagicPower.this,MainMenu.class)); 

Я хотел бы предложить вам удалить эту строку:

startActivity(new Intent(MagicPower.this,MainMenu.class)); 
+0

Вот что это было моей собственной ошибкой bru !!! спасибо брату Викраму – user2496503

2

Попробуйте изменить android:launchMode деятельности MainMenu в вашем AndroidManifet.xml. Возможно, «singleTop» - это то, что вам нужно.

0

Вместо:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

Вы можете использовать это:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Это сохранит состояние Activity.