【问题标题】:Use the startActivityForResult method in a class that extends View and not extends AppCompatActivity?在扩展 View 而不是扩展 AppCompatActivity 的类中使用 startActivityForResult 方法?
【发布时间】:2020-07-26 12:51:31
【问题描述】:

如何在扩展 View 而不是扩展 AppCompatActivity 的类中使用 startActivityForResult 方法?

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);

            }
        });
    
    }
    
}

【问题讨论】:

    标签: startactivityforresult


    【解决方案1】:

    startActivityForResult(i, requestCode);替换为:

    ((Activity)context).startActivityForResult(i, requestCode);
    

    【讨论】:

    • java.lang.ClassCastException: android.app.Application 无法在 android.view.View.performClick 的 765.ContentsElement$1.onClick(ContentsElement.java:65) 处转换​​为 android.app.Activity (View.java:5610)
    • 看起来您正在传递“getApplicationContext”,而不是活动上下文。请查看此答案以获取更多详细信息:stackoverflow.com/a/23546802/6651763
    • 谢谢!我可以在同一个类中使用 onActivityResult 吗?
    • 您在期望检索结果的地方使用它。
    猜你喜欢
    • 2020-12-11
    • 2020-12-29
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多