Использовать метод startActivityForResult в классе, который расширяет представление, а не расширяет AppCompatActivity?

Как я могу использовать метод startActivityForResult в классе, который расширяет View, а не расширяет AppCompatActivity?

public class ContentsElement extends View {
    
    public ContentsElement(final Context context, final String text, final int requestCode, FlexboxLayout cl) {
        super(context);
            final TextView mu = new TextView(getContext());
        mu.setText(text);
        cl.addView(mu);

        mu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast toast = Toast.makeText(getContext(),
                        mu.getText(), Toast.LENGTH_SHORT);
                toast.show();

                Context context = getContext();
                Intent i = new Intent(context, MainActivity.class);

                startActivityForResult(i, requestCode);

            }
        });
    
    }
    
}

person Тульский Пряник    schedule 26.07.2020    source источник


Ответы (1)


Замените startActivityForResult(i, requestCode); на:

((Activity)context).startActivityForResult(i, requestCode);
person Fahima Mokhtari    schedule 26.07.2020
comment
java.lang.ClassCastException: android.app.Application не может быть преобразован в android.app.Activity в 765.ContentsElement$1.onClick(ContentsElement.java:65) в android.view.View.performClick(View.java:5610) - person Тульский Пряник; 26.07.2020
comment
Похоже, вы передаете getApplicationContext, а не контекст действия. Взгляните на этот ответ для более подробной информации: stackoverflow.com/a/23546802/6651763 - person Fahima Mokhtari; 26.07.2020
comment
Спасибо! Могу ли я использовать onActivityResult в том же классе? - person Тульский Пряник; 26.07.2020
comment
Вы используете его там, где ожидаете получить результат. - person Fahima Mokhtari; 26.07.2020