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 的默认导航抽屉模板中使用按钮在片段之间切换

通过按下 Android Studio 中的片段中的按钮进入新页面

什么是 android studio 中的片段活动?

在 android Studio 中,我希望当我点击按钮时,下一个活动/片段应该来自右侧

手电筒片段 Android Studio