试图在片段内按下按钮按下

时间:2018-01-07 14:33:33

标签: android

我创建了一个片段,想要检测按下按钮的时间。当我调用findViewById时,我收到错误消息,说无法解析methed。

我假设这是因为片段类中不存在此方法。

如何检测单击片段内的按钮的时间。?

我的测试代码:

public class TestFragment extends Fragment implements View.OnClickListener {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_test, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // Setup any handles to view objects here
    // EditText etFoo = (EditText) view.findViewById(R.id.etFoo);

    View mCall = findViewById(R.id.button);
    mCall.setOnClickListener(this);
}

public void onClick(View v) {


}


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent" android:layout_height="match_parent"
  android:orientation="vertical" >

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

}

<fragment
    android:name="com.example.tedpo.testfragment.TestFragment"
    android:id="@+id/fooFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

2 个答案:

答案 0 :(得分:0)

使用:

 View mCall = view.findViewById(R.id.button);

您必须在参数中的当前findViewById参数中Button View view

答案 1 :(得分:0)

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
   View view= inflater.inflate(R.layout.fragment_test, container, false);
Button button=view.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    //DO SOMETHING! {RUN SOME FUNCTION ... DO CHECKS... ETC}
    } 
});
return view;
}

findViewById不会工作,因为它不知道必须搜索哪个布局文件项。

使用view.findViewById代替findViewByIdview.findViewById会在R.layout.fragment_test找到项目