我尝试创建一个在开始时显示片段的应用程序,然后您可以使用第一个片段中的按钮将该片段更改为另一个片段。但是当我将按钮动作放在片段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);
}
}
答案 0 :(得分:1)
但是当我将按钮操作放在片段java中时,它将无法启动并且我得到nullpointerexception错误。你能告诉我为什么吗?
我发现你的代码有些错误......
首先,如果你没有夸大其中一个,你就不能打电话给/*[2:40:11 PM][16 ms]*/ CREATE TABLE `test` ( `tinyint` TINYINT(1) NOT NULL DEFAULT 0, `int` INT(11) NOT NULL DEFAULT 0 ) ENGINE=INNODB DEFAULT CHARSET=latin1;
/*[2:40:22 PM][30 ms]*/ CREATE TABLE `test2` ( `tinyint` TINYINT(1) NOT NULL DEFAULT '0', `int` INT(11) NOT NULL DEFAULT '0' ) ENGINE=INNODB DEFAULT CHARSET=latin1;
,这意味着你必须给视图充气,因为我会回答你的问题然后你可以避开getView()
并使用getView()
本身。
而不是返回inflater,你必须返回view
这就是View
应该是这样的:
Fragment
答案 1 :(得分:0)
您必须首先对视图进行充气并使用其返回的视图而不是getView()。
Entry
然后
View view = inflater.inflate (...);
这是因为getView()返回的视图尚未创建,因此getView()返回null。