Как приостановить действие, пока другое действие не вернет результат?

Мне нужно знать, как приостановить действие, в то время как другое действие отправляет значение. В моем коде основное действие вызывает второе действие, а второе действие отправляет результат, поэтому в идеале основное действие должно ждать, пока не получит результат от второго действия.

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="hello"

1 ответ

Решение

Активность автоматически приостанавливается после начала новой Активности. Но сначала он должен выйти из вызванного вами метода onClick(). Азбука содержит текст, который вы хотите. Тост показывает ноль, потому что abc ноль.

Вы должны делать все, что вы хотите, с помощью строки abc внутри

onActivityResult

метод, где он содержит правильное значение.

Другие вопросы по тегам