Android Studio - 片段按钮操作
Posted
技术标签:
【中文标题】Android Studio - 片段按钮操作【英文标题】:Android Studio - Fragment button action 【发布时间】:2016-05-31 04:04:33 【问题描述】:我尝试制作一个在开始时显示片段的应用程序,然后您可以使用第一个片段中的按钮将该片段更改为另一个片段。但是当我将按钮操作放在片段 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);
【问题讨论】:
【参考方案1】:但是当我将按钮操作放入片段 java 中时,它不会启动并且我得到 nullpointerexception 错误。你能告诉我为什么吗?
嗯,我看到你的代码有一些错误......
首先你不能打电话给getView()
,如果你没有充气,这意味着你必须充气一个视图,因为我会给出我的答案,然后你可以避免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;
【讨论】:
它仍然在第 22 行给出错误,所以 fm.beginTransaction().replace(R.id.content_frame, new Fragment_1()).commit(); 但我想我只是想出了原因。因为 content_frame 在主要活动布局中而不是在片段布局中。 不,我不知道怎么做。 :/ 我真的是个初学者。 所以你想从一个 Fragment 移动到另一个 Fragment 对吗? 它有效。我只需要替换而不是添加,但它完美无缺。非常感谢。 :)【参考方案2】:你必须先膨胀视图并使用它返回的视图而不是 getView()。
View view = inflater.inflate (...);
然后
... = (Button) view.findView(...);
出现这种情况是因为getView()返回的视图还没有创建,所以getView()返回null。
【讨论】:
以上是关于Android Studio - 片段按钮操作的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Studio 的默认导航抽屉模板中使用按钮在片段之间切换
通过按下 Android Studio 中的片段中的按钮进入新页面