Android Studio - 片段按钮操作

时间:2016-02-18 19:34:34

标签: java android android-fragments button 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);

}
}

2 个答案:

答案 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。