从DialogFragment打开DatePicker

时间:2016-03-11 15:18:23

标签: android android-dialogfragment android-datepicker

我正在尝试从DialogFragment打开一个DatePickerDialog,但是出了点问题。

public class Calculator_fragment extends DialogFragment implements View.OnClickListener {

Button first;
Button second;
TextView first_calendar;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.calculator_fragment, container,
            false);


    first = (Button) rootView.findViewById(R.id.mparko);
    first.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent from_calendar = new Intent(getActivity(), DatePicker_from.class);
            startActivity(from_calendar);
        }
    });

第一个对话框片段正在打开,但是当我单击按钮打开时 来自以下类的DatePicker,我的应用程序正在停止。我知道问题来自getActivity()命令。

public class DatePicker_from extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanseState){
    final Calendar from_calendar = Calendar.getInstance();
    int from_month = from_calendar.get(Calendar.MONTH);
    int from_day = from_calendar.get(Calendar.DAY_OF_MONTH);
    int from_year = from_calendar.get(Calendar.YEAR);

    return  new DatePickerDialog(getActivity(),this, from_year ,from_month, from_day);
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

}

03-11 16:55:59.602 13928-13928/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.seamansbutton/com.example.seamansbutton.DatePicker_from}; have you declared this activity in your AndroidManifest.xml?
                                                   at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1556)
                                                   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1431)
                                                   at android.app.Activity.startActivityForResult(Activity.java:3429)
                                                   at android.app.Activity.startActivityForResult(Activity.java:3390)
                                                   at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:813)
                                                   at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:871)
                                                   at android.support.v4.app.Fragment.startActivity(Fragment.java:916)
                                                   at com.example.seamansbutton.Calculator_fragment$1.onClick(Calculator_fragment.java:35)
                                                   at android.view.View.performClick(View.java:4275)
                                                   at android.view.View$PerformClick.run(View.java:17437)
                                                   at android.os.Handler.handleCallback(Handler.java:615)
                                                   at android.os.Handler.dispatchMessage(Handler.java:92)
                                                   at android.os.Looper.loop(Looper.java:177)
                                                   at android.app.ActivityThread.main(ActivityThread.java:4947)
                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:511)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
                                                   at dalvik.system.NativeStart.main(Native Method)

编辑2,AndroidManifest:                  

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <android:uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/My.Holo.Light.FullScreen">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.default" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Contact"
            android:label="@string/title_activity_contact"></activity>
        <activity
            android:name=".DatePicker_from"
            android:label="@string/DP"></activity>

        <activity android:name=".Splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

感谢的。

1 个答案:

答案 0 :(得分:3)

DialogFragment不是Activity,这就是您获得ActivityNotFoundException的原因。

您应该在onClick()方法中执行以下操作:

DatePicker_from dialogFragment = new DatePicker_from(); dialogFragment.show(getFragmentManager(), "tag");