2016-03-20 16 views
1

他のアクティビティが値を送信している間に、アクティビティを一時停止する方法を知る必要があります。 私のコードでは、メインアクティビティが2番目のアクティビティを呼び出し、2番目のアクティビティが結果を送信するので、メインアクティビティは2番目のアクティビティから結果を受け取るまで待つのが理想です。他のアクティビティが結果を返すまで、アクティビティを一時停止する方法はありますか?

public class MainActivity extends AppCompatActivity { 
public final static String key = "abc"; 
public final static String key1 = "abcd"; 
String abc; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button b1 = (Button) findViewById(R.id.button); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Toast.makeText(MainActivity.this, "sbabs", Toast.LENGTH_SHORT).show(); 
      send(); 

     } 
    }); 
} 

public void send() { 
    // Toast.makeText(MainActivity.this, "jsjaskb", Toast.LENGTH_SHORT).show(); 
    // String str="this is"; 
    String[] str = {"Blue", "Green", "Purple", "Red"}; 
    Intent intent = new Intent(this, Second.class); 
    intent.putExtra(key, str); 
    startActivityForResult(intent, 1); 


    Toast.makeText(MainActivity.this, ""+abc, Toast.LENGTH_SHORT).show(); 

    // Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show(); 

} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1 && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     abc = extras.getString(key1); 
     // txtinput1.setText(str); 
     // Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show(); 
    } 
} 

}

public class Second extends AppCompatActivity { 
public final static String key="abc"; 
public final static String key1="abcd"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 

    Intent intent=getIntent(); 
    String[] msg=intent.getStringArrayExtra(key); 
    Toast.makeText(this, "" + msg[0], Toast.LENGTH_SHORT).show(); 

    Button b1 = (Button) findViewById(R.id.button2); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Toast.makeText(MainActivity.this, "sbabs", Toast.LENGTH_SHORT).show(); 
      String str = "hello"; 
      Intent intent1 = new Intent(); 
      intent1.putExtra(key1, str); 
      setResult(RESULT_OK, intent1); 
      finish(); 


     } 
    }); 
} 

}

今問題は、第二の活性値を割り当てることができる前に主な活動は、STR = NULLを印刷することであるSTR = "こんにちは"

+0

問題はなんですか? onActivityResult内でToast.makeTextを移動するだけで正しい値が出力されます。 – Wukash

+0

あなたはすでに正しい方向に進んでいます。今何が問題なの? –

+0

あなたはstartActivityForResultでそれを行うことができます....既にonstore.overflow.com/questions/10407159/how-to-manage-startactivityforresult-on-android – jonhid

答えて

1

活性であります新しいアクティビティを開始すると自動的に一時停止します。しかし、最初に呼び出されたonClick()メソッドを終了する必要があります。 abcはあなたが望むテキストを保持します。 abcがnullであるため、Toastはnullを表示しています。

あなたはそれが正しい値を保持している

onActivityResult 

方法、内部のABC文字列でやりたいしなければなりません。

+0

thnk u man !!!出来た –

関連する問題