2017-08-12 4 views
0

2つのクラスMainActivity.classとDown.classがあります。 MainActivity.classのボタンをクリックし、いくつかの条件に基づいて、私はDown.classにリダイレクトしたいと思う。しかし、コードはMainActivity.classで引き続き実行されますが、その理由は何でしょうか?インテントを使用してリダイレクトした後も同じクラスでコードが実行され続けます

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


int var_l=0; 

FYI上記のコードが実行されています(私はデバッグモードでチェックしました)。

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を以下のように使用しました。 ישואוהבאותךstartActivity()から述べたよう

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

は、次のコード行を実行し続けるような方法で非同期です。 Developers GuidestartActivity()に記載されているように、活動がすぐに始まるわけではありません。引用:

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. ダウン:こんにちはMainActivity
  5. ダウン
  6. から:活動が戻っ

を停止したが、同じブロック内で、さらに実行を停止する一つの方法です。私はActivity Lifecycleのドキュメントを調べることをお勧めします。

関連する問題