Используйте startActivityForResult от класса к деятельности - PullRequest
0 голосов
/ 28 января 2020

Не могу найти хороший ответ для этого. У меня есть класс (не открывается из MainActivity. Там я хочу вызвать startActivityForResult, чтобы узнать, когда что-то делать в пользовательском интерфейсе. Как мне сделать это правильно? Я передал активность и контекст в класс. В классе:

private void init(){
        Intent TestIntent = new Intent();
        mActivity.startActivityForResult(TestIntent,MainActivity.TEST);
    }

On MainActivity:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent Data) {
        super.onActivityResult(requestCode, resultCode, Data);
        if (requestCode == TEST){
            Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show();
        }
    }

Ответы [ 3 ]

0 голосов
/ 28 января 2020

Ваш TestIntent пуст. В нем нет ничего, что сообщало бы Android, с чего Activity начинать. Вам нужно создать свой Intent так:

private void init(){
    Intent TestIntent = new Intent(mActivity, ActivityToStart.class);
    mActivity.startActivityForResult(TestIntent,MainActivity.TEST);
}
0 голосов
/ 29 января 2020
private void init(){
Intent intent = new Intent(this,another.class);
startActivityForResult(intent,requestCode);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent Data) {
    super.onActivityResult(requestCode, resultCode, Data);
    if (requestCode == reruestCode){
        Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show();
    }
}


  private void getResponse(){
            setResult(RESULT_OK,new Intent());
          finish();
//Use this block of code in the second class.
        }
0 голосов
/ 28 января 2020

Отметьте это, вы должны передать код с намерением требуемого класса

private void init(){
    Intent TestIntent = new Intent(this,SecondClass);
    startActivityForResult(TestIntent,222);
}



@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent Data) {
        super.onActivityResult(requestCode, resultCode, Data);
        if (requestCode == 222){
            Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show();
        }
    }
...