2017-08-12 12 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文档。

相关问题