java - APP停止工作 - fragment

标签 java android android-fragments

我正在 Android 中创建一个日期选择器。但不幸的是,单击按钮时应用程序停止工作。这是我的代码。我是android开发的新手。

fragment _1.java

public class fragment_1 extends Fragment {

    private EditText txtJODate;
    private DatePickerDialog txtDTJODate;
    private SimpleDateFormat dateFormat;
    private View view;
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
        return inflater.inflate(R.layout.fragment_tab1, container, false);

    }

    public void onClickDate(View v){
        android.supporft.v4.app.DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getFragmentManager(), "datePicker");
    }

}

DatePickerFragment.java
public class DatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

// Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {
        Calendar c = Calendar.getInstance();
        c.set(year, month, day);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = sdf.format(c.getTime());
    }
}

这是我的布局
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#D9E5F2">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        >

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:text="@string/txt_customer"
            android:id="@+id/txtCustomer"  />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/txtDate"
            android:onClick="onClickDate"/>

    </LinearLayout>

</LinearLayout>

这是我的 Logcat :
java.lang.IllegalStateException: Could not find a method onClickDate(View) in the activity class com.apptech_experts.appportal.fragment_main for onClick handler on view class android.widget.Button with id 'txtDate'
        at android.view.View$1.onClick(View.java:3956)
        at android.view.View.performClick(View.java:4630)
        at android.view.View$PerformClick.run(View.java:19339)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5335)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NoSuchMethodException: onClickDate [class android.view.View]
        at java.lang.Class.getConstructorOrMethod(Class.java:472)
        at java.lang.Class.getMethod(Class.java:857)
        at android.view.View$1.onClick(View.java:3949)
            at android.view.View.performClick(View.java:4630)
            at android.view.View$PerformClick.run(View.java:19339)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5335)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
            at dalvik.system.NativeStart.main(Native Method)

最佳答案

你用过

android:onClick="onClickDate"

用于 xml 文件中的按钮。

但是您的 java 代码不包含函数 onClickDate() .这就是您遇到崩溃的原因:
Could not find a method onClickDate(View) in the activity class com.apptech_experts.appportal.fragment_main

请在您的类(class)中添加一个功能。
public void onClickDate (View v){
    //do something
}

引用 onClick这样你就知道它是如何工作的了。

希望能帮助到你。

关于java - APP停止工作 - fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034030/

相关文章:

java - 使用 LTE 而不是 WiFi 获取位置数据时遇到问题

java - 如何更改 CouchDB 数据库中所有文档的结构?

android - Gradle 插件 1.4.0-beta6 不适用于缩小和重新打包类选项

Android GCM 已成功发送但在某些设备上未收到

Android fragment 过渡

java - 搜索 Java 链表

java - 为什么这个 GUI 程序运行时框架没有居中?

android - 使用绑定(bind)服务的自定义适配器 - 何时取消绑定(bind)?

java - 在 fragment 和列表 fragment 之间切换会导致错误

具有共享元素的 Android fragment 转换