我尝试制作一个在开始时显示一个 fragment 的应用程序,然后您可以将该 fragment 更改为另一个 fragment ,并在第一个 fragment 中使用一个按钮。但是,当我将按钮操作放在 fragment java 中时,它不会启动,并且出现 nullpointerexception 错误。你能告诉我为什么吗?
public class Fragment_main extends Fragment {
FragmentManager fm = getFragmentManager();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Button button_inditas = (Button) getView().findViewById(R.id.button_inditas);
button_inditas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fm.beginTransaction().replace(R.id.content_frame, new Fragment_1()).commit();
}
});
return inflater.inflate(R.layout.fragment_main,container,false);
}
}
最佳答案
But when I put the button action in the fragments java, it won't start and I get the nullpointerexception error. Could you tell me why?
嗯,我看到你的代码有一些错误......
首先,如果您还没有充气,则不能调用 getView()
,这意味着您必须充气 View ,因为我将我的回答,然后你可以避免 getView()
并使用 view
本身。
而不是返回充气器,你必须返回你的 View
这就是您的 Fragment
的样子:
public class Fragment_main extends Fragment {
public Fragment_main() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main,container,false);
Button button_inditas = (Button)rootView.findViewById(R.id.button_inditas);
button_inditas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getFragmentManager ();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction ();
fragmentTransaction.add (R.id.content_frame, new Fragment_1());
fragmentTransaction.commit ();
});
return rootView;
}
}
关于java - Android Studio - fragment 按钮 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35490797/