2017-08-12 16 views
0

我有2個類,MainActivity.class和Down.class。在MainActivity.class中單擊按鈕並基於某些條件,我想重定向到Down.class。但是代碼在MainActivity.class中繼續執行,即使在以下情況之後,可能是什麼原因呢?即使使用Intent重定向後,代碼仍會繼續在同一類中執行

if(x==1) 
{ 
    Intent myintent = new Intent(MainActivity.this, Down.class); 
    myintent.putExtra("error", col_key); 
    startActivity(myintent); 
} 


int var_l=0; 

僅供參考上述代碼正在執行(我已在Debug模式下進行檢查)。

Down.class

public class Down extends AppCompatActivity { 

    TextView var_textView_down; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.down); 


     var_textView_down = (TextView) findViewById(R.id.ui_textView_down); 
     Bundle extras = getIntent().getExtras(); 
     String error=extras.getString("error"); 
     var_textView_down.setText(error); 



    } 
} 
+0

你也可以把你的條件代碼?在此基礎上重定向用戶。 – hsm59

+0

@ hsm59,這並不重要,因爲我已經看到上述代碼正在調試模式下執行。 – djac

+2

您需要停止代碼塊執行自己或完成您的案例中的以前的活動MainActivity – santalu

回答

0

你需要把一回停止進一步的代碼被執行。

if(x==1) 
{ 
    Intent myintent = new Intent(MainActivity.this, Down.class); 
    myintent.putExtra("error", col_key); 
    startActivity(myintent); 
    //put a return here 
    return; 
} 


int var_l=0; 
2

你必須記住,startActivity(intent)startActivityForResult(intent)是異步方法。所以你的下一行代碼將被執行,而不必等到活動被創建和顯示。

0

問題已解決。我使用return如下所示。

if(x==1) 
{ 
    Intent myintent = new Intent(MainActivity.this, Down.class); 
    myintent.putExtra("error", col_key); 
    startActivity(myintent); 
    return; 
} 
0

如從ישואוהבאותךstartActivity()提到是異步的方式中的下面幾行代碼將繼續執行。如Developers GuidestartActivity()所述,並不意味着活動將立即開始。 Quote:

startActivity啓動一項新的活動。您將不會收到有關活動時退出

要驗證的任何信息:

// override onStop in your MainActivity 
@Override 
protected void onStop() { 
    super.onStop(); 
    Log.d("MainActivity", "activity stopped"); 
} 

// override onPause in your MainActivity 
@Override 
protected void onPause() { 
    super.onPause(); 
    Log.d("MainActivity", "activity paused"); 
} 


// wherever the "Down" activity is started within MainActivity 
{ 
    Log.d("MainActivity", "about to start Down"); 
    Intent myintent = new Intent(MainActivity.this, Down.class); 
    startActivity(myintent);  
    Log.d("MainActivity", "Continuing work"); 
} 


// add to onCreate() in the Down Activity 
Log.d("Down", "Hello from Down"); 

你會得到如下的執行順序:

  1. MainActivity:即將開始向下
  2. MainActivity:繼續工作
  3. MainActivity:活動暫停
  4. 下:你好,從下
  5. MainActivity:活動停止

返回是停止在同一區塊內的進一步執行的一種方式。我建議看一下Activity Lifecycle文檔。

相關問題