Java 从片段打开活动,但继续关闭应用程序
我试图通过Java 从片段打开活动,但继续关闭应用程序,java,android,Java,Android,我试图通过ImageButton从片段打开活动,但当我打开时,它会一直关闭应用程序。android研究中没有显示错误。有什么问题吗 FragmentMicrosoft.java public class FragmentMicrosoft extends Fragment { View view; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nul
ImageButton
从片段
打开活动
,但当我打开时,它会一直关闭应用程序。android研究中没有显示错误。有什么问题吗
FragmentMicrosoft.java
public class FragmentMicrosoft extends Fragment {
View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.microsoft_fragment, container, false);
return view;
}
public FragmentMicrosoft() {
}
public void clickMSWORD(View view) {
Intent intent = new Intent(getActivity(), activity_word.class);
startActivity(intent);
}
}
这就是ImageButton
的定义方式:
<ImageButton
android:id="@+id/wordbtn"
android:background="@drawable/word_background"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_marginRight="5dp"
android:src="@drawable/word_logo"
android:onClick="clickMSWORD" />
重写onResume()并从xml获取对ImageView的引用
ImageView ImageView=(ImageView)findViewById(R.id.wordBtn)
让我知道它是否有效 您不能使用android:onClick=“clickMSWORD”调用fragment的方法。这样我们就可以调用activity的方法。按照以下选项调用
单击msword
选项-1:在onCreateView
中初始化视图,并启动onClickListener
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.microsoft_fragment, container, false);
ImageButton imageButton = view.findViewById(R.id. wordbtn);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//from here call clickMSWORD or implement logic
clickMSWORD(v);
}
});
return view;
}
选项-2:在活动中添加方法,并在片段中使用片段实例调用方法
Fragment fragmentMicrosoft;
//Either onCreate or anywhere initialize your fragment before using it.
public void clickMSWORD(View v) {
fragmentMicrosoft.clickMSWORD(v);
}
贴上带有错误的stacktrace,非常感谢,先生。选项1适合我。上帝保佑!:)