2016-07-29 8 views
-1

私は2つのアクティビティアクティビティAとアクティビティBを持っていますが、私はインテントを使ってAct-AからAct Bに値を渡します。すべてがうまくいきます。 Act-Bを開くと、Act-AからValueが得られます。問題は、Back Button(2回)をクリックしてAct-Aを取得したときです。同じアクティビティを1回押すと、私は Act-Aで私をナビゲートしません。なぜ私のバックボタンが正しく機能しないのですか

法-A:

btn_add_city.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         // Launching Add_City Screen 
         Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
passmyValue(); 

        } 
       }); 

     public void passmyValue(){ 

       intent = new Intent(getApplicationContext(),Act-B.class); 
       intent.putExtra("name", receive.getText().toString()); 
       startActivity(intent); 
      } 

法-B:

receive = (TextView)findViewById(R.id.userHidden); 
receive.setText(getIntent().getStringExtra("name")); 
+2

これはどのように可能ですか? 'onBackPressed'をオーバーライドしましたか?何か他のもの(キーボードなど)が最初に押された後に閉じられ、次に2番目のアクティビティがありますか? – Vucko

+0

メソッドが呼び出されたかどうかを調べるために、onBackPressedをオーバーライドして(そこにのみ)superを試みてください。 –

+0

問題は、私のActivity-Aにはボタンが含まれています。そのボタンを押すとActivity-Bが開きます。同じページで私はインテントを持っています – AndroidBoy

答えて

0

あなたはちょうど新しい2つのインテントと、アクティビティBとアクティビティBの2つのアクティビティを開始します。 Act-A、Act-B、Act-Bの3つのアクティビティがあります。

同じアクティビティを2回開始する必要はありません。以下のコードを試してみてください。私はそれが役に立つと思います。 onClickで

btn_add_city.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     // Launching Add_City Screen 
     // It's no need to start the same activity for twice 
     passmyValue(); 
    } 
}); 

public void passmyValue(){ 
    intent = new Intent(getApplicationContext(),Act-B.class); 
    intent.putExtra("name", receive.getText().toString()); 
    startActivity(intent); 
} 
1

あなたの問題は、このコードの抜粋である:

// Launching Add_City Screen 
Intent i = new Intent(getApplicationContext(), Acti-B.class); 
startActivity(i); 
passmyValue(); 

アクティビティ-B 2開始時間、最初はエキストラもなく、2度目はpassmyValue()

Activit-Bは、デフォルトの起動モードを使用しているため、Activity-Bのインスタンスが2つあるとします。つまり、バックスタックはActivity-A - > Activity-B - > Activity-Bのようになります。したがって、Activity-Aに戻るには、2回前に戻る必要があります。

ただ、これらの行を削除します。

Intent i = new Intent(getApplicationContext(), Acti-B.class); 
startActivity(i); 
1

をコードのこの部分では:あなたは二回の活動を開始しているので、

@Override 
        public void onClick(View view) { 
         // Launching Add_City Screen 
         Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
passmyValue(); 

        } 

は最初の意図を削除します。これは、あなたのアクティビティBが意図的に一度だけ開始されることを意味します。後ろを押すと最初のものを閉じ、もう一度2番目のインスタンスを閉じます。単に行を削除し、このようなBの活動を開始します。

@Override 
    public void onClick(View view) { 
    passmyValue(); 
} 
2

だから私は、あなたがANDROID INTENTSと遊ぶことができなければならないと思います。これはSimilar Question to youです。私はそれがあなたに答えることを自由に感じていない場合に役立つことを願っています:) :)

1

()は、

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 

によって活性-Bを起動すると、もう一度意図と同じであるPassMyValue方法でstartActivity(intent) iはを呼び出しています。アクティビティBを2回開始します。 削除することで修正する必要があります

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
関連する問題