Android 从DialogFragment打开日期选择器

Android 从DialogFragment打开日期选择器,android,android-dialogfragment,android-datepicker,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

我试图从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);
        }
    });
    <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>
第一个对话框片段正在打开,但是当我单击按钮打开 来自以下类的日期选择器,我的应用程序正在停止。我知道问题出在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)
    <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>
编辑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>


谢谢。

对话框片段
不是一个
活动
,这就是为什么您会得到
活动NotFoundException

    <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>
您应该在
onClick()方法中执行类似操作:

    <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>
dialogFragment中的日期选择器=new DatePicker_from();

显示(getFragmentManager(),“标记”)

您是否已在AndroidManifest.xml中的
活动中声明了此日期选择器?@SaumikBhattacharya是的!如果您也在问题中添加AndroidManifest.xml会更好!:)@SaumikBhattacharya完成了!:)
    <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>