【问题标题】:Call a button in the method of a fragment在片段的方法中调用按钮
【发布时间】:2014-08-14 02:06:46
【问题描述】:

你能帮忙引用一个从 OnCreateView 到它的方法的按钮吗?

这是我的代码。

public class static placeholder extends Fragment {

    public placeholder()
    { ... }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        Button pc = (Button) rootView.findViewById(R.id.btnPc);

        ...
    }

    //Call the button pc to this method
    public void callPc()
    {
        //Reference the button Here!
    }
}

我已经尝试使用getView().findViewById(R.id.btnPc) 调用它,但它不起作用。我也使用了getActivity(),但它也不起作用。

fragment_main.xml

<RelativeLayout
    android:id="@+id/weightLimitResultBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:id="@+id/btnPc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="Button" />

</RelativeLayout>

【问题讨论】:

  • onCreateView的返回值在哪里?
  • return rootview in onCreateView
  • 你的意思是你想要一个 onClickListener 附加到片段中的按钮上?
  • 覆盖 onActivityCreated()setOnClickListener() 内部?
  • 我已经尝试使用 getView().findViewById(R.id.btnPc) 调用它,但它不起作用。我也使用了 getActivity(),但它也不起作用。你能告诉我它是如何如何不起作用的吗?它会抛出错误吗?崩溃了?

标签: android android-fragments android-button


【解决方案1】:

将参数添加到您的按钮 xml

android:onClick="callPc"

或者你可以全局初始化你的按钮对象(在初始化类之后) 然后你可以在任何地方调用你的按钮

或者您可以像这样将参数设置为您的 callPc()

public void callPc(Button btn)
{
    btn.setOnClickListener(...);
}

【讨论】:

  • 非常感谢您提出这个想法。
  • 非常感谢您的帮助。上帝保佑你。
【解决方案2】:

您必须在 onViewCreated 方法中为 onClicklistener 编写代码,因为您使用的是片段 ....

 @Override  
public void onViewCreated(View view, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onViewCreated(view, savedInstanceState);



    pc.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {   
          // your action for button click 


         }
         }); 
         } 

【讨论】:

  • 感谢这个想法。是的,这就是我所做的,我想做的是我想在片段的方法中调用一个按钮。总而言之,我想说谢谢。上帝保佑你..
猜你喜欢
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多