Android 从自定义视图组调用startActivityForResult
我有一个从LinearLayout扩展的自定义组视图:Android 从自定义视图组调用startActivityForResult,android,Android,我有一个从LinearLayout扩展的自定义组视图: class MyCustomView extends LinearLayout { public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); onCreateView(context); } public MyCustomView(Context context, int che
class MyCustomView extends LinearLayout {
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
onCreateView(context);
}
public MyCustomView(Context context, int checkableId) {
super(context);
onCreateView(context);
}
private void onCreateView(Context context){
View.inflate(context, R.id.my_custom_view, null);
}
}
在该自定义组视图中,我有一个按钮,当用户单击该按钮时,我需要使用startActivityForResult调用一个活动,因为我需要从该活动返回
但是LinearLayout既不实现startActivityForResult,也不实现onActivityResult
所以我的问题是:如何从“MyCustomView”调用startActivityForResult?据我所知,您有两种选择:
Activity
、Fragment
或FragmentActivity
之一的类中使用MyCustomView
,并从中调用startActivityForResult()
MyCustomView
(可能通过构造函数)并使用instanceOfYourActivity.startActivityForResult()
。Hoveware说,这可能是不安全的,并会导致副作用(例如,您可能无法捕捉到ActivityResult())据我所知,你有两个选择:
Activity
、Fragment
或FragmentActivity
之一的类中使用MyCustomView
,并从中调用startActivityForResult()
MyCustomView
(可能通过构造函数)并使用instanceOfYourActivity.startActivityForResult()
。Hoveware说,这可能是不安全的,并会导致副作用(例如,您可能无法捕捉到ActivityResult())我有两种解决方案,对我有效。我不知道这些解决方案是否好:-) 解决方案A:
public void openSearchActivity(){
Intent mySearchIntent = new Intent( this, SearchActivity.class);
startActivityForResult(mySearchIntent, 0);
}Activity mainactivity;
public void setMainactivity(Activity mainactivity) {
this.mainactivity = mainactivity;
}
Intent mySearchIntent = new Intent( mainactivity, SearchActivity.class);
mainactivity.startActivityForResult(mySearchIntent,1);
我有两种解决方案,对我有效。我不知道这些解决方案是否好:-) 解决方案A:
public void openSearchActivity(){
Intent mySearchIntent = new Intent( this, SearchActivity.class);
startActivityForResult(mySearchIntent, 0);
}Activity mainactivity;
public void setMainactivity(Activity mainactivity) {
this.mainactivity = mainactivity;
}
Intent mySearchIntent = new Intent( mainactivity, SearchActivity.class);
mainactivity.startActivityForResult(mySearchIntent,1);
您需要从使用
MyCustomView
的活动中调用startActivityForResult
。您需要从使用MyCustomView
的活动中调用startActivityForResult
。我尝试使用片段,但是嵌套片段还不受支持,我不想以编程方式实例化片段,所以我将使用您的第二个选项,唯一的问题是ActivityResult方法必须在Activity中实现。我尝试使用片段,但是嵌套片段还不受支持,我不想以编程方式实例化片段,所以我将使用第二个选项,唯一的问题是activityresult方法必须在Activity中实现。