问题
写代码需要在一个非Activity的普通类中调用startActicityForResult()。但是一下两个写法都是不行的。
holder.GoodItemView.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View view) {
// 定义intent就是new一下而已,省略
view.startActivityForResult(intent, 1) // 第一种写法,无法解析此函数
view.getContext().startActivityForResult(intent, 1) // 第二种写法,无法解析此函数。
}
});
解决
参考了https://stackoverflow.com/questions/2848775/use-startactivityforresult-from-non-activity
参考资料说startActivityForResult()是一个Activity的成员函数,而不是view(第一种写法)或者Context(第二种写法)的成员函数,因而第一和第二中写法都错了。
正确的写法是,通过类型转换转成Acticity再调用startActivityForResult():
((Activity)(par.getContext())).startActivityForResult(intent, 1); // 正确的调用方法