将DatePickerDialog添加到项目的问题

时间:2014-07-16 09:11:26

标签: java android-studio

关于在使用Android Studio时向我的应用添加DatePicker,我会关注此example

import      android.support.v4.app.DialogFragment;

     public static 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);
        }

        public void onDateSet(DatePicker view, int year, int month, int day) {
            // Do something with the date chosen by the user
        }
    }

问题是我甚至无法编译项目。这是错误:

Error:(6, 42) java: cannot find symbol
  symbol: class DialogFragment
Error:(7, 36) java: package DatePickerDialog does not exist

我试过了import android.support.v4.app.DialogFragment;,但它不存在。此外,我将我的项目设置为 API 11 ,因为这是此控件的最小api级别。有什么想法吗?

我让datePicker以某种方式工作,但现在我在打开包含datepicker的活动时遇到错误:

07-16 18:17:36.274    1822-1822/mycalories.com.jalle.mycalories D/AndroidRuntime﹕ Shutting down VM
07-16 18:17:36.274    1822-1822/mycalories.com.jalle.mycalories W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4db2b20)
07-16 18:17:36.274    1822-1822/mycalories.com.jalle.mycalories E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: mycalories.com.jalle.mycalories, PID: 1822
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{mycalories.com.jalle.mycalories/mycalories.com.jalle.mycalories.MealsEditActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            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:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at android.app.Activity.findViewById(Activity.java:1884)
            at mycalories.com.jalle.mycalories.MealsEditActivity.<init>(MealsEditActivity.java:23)
            at java.lang.Class.newInstanceImpl(Native Method)
            at java.lang.Class.newInstance(Class.java:1208)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            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:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)

这是活动

package mycalories.com.jalle.mycalories;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v4.app.DialogFragment;
    import android.support.v4.app.FragmentActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;

    import com.parse.Parse;
    import com.parse.ParseUser;

    //import android.app.DialogFragment;

    public class MealsEditActivity extends FragmentActivity implements mycalories.com.jalle.mycalories.DatePickerFragment.TheListener{
      public final EditText txtDate=(EditText) findViewById(R.id.txtDate);
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.meals_edit);

            Button btnDate = (Button) findViewById(R.id.btnDate);
            btnDate.setOnClickListener(new View.OnClickListener() {
                                           public void onClick(View v) {
                   Utils.MyToast("btnDate", getApplicationContext());

                   DialogFragment newFragment = new com.jalle.mycalories.DatePickerFragment();
                   newFragment.show(getSupportFragmentManager(), "datePicker");
               }
           }
            );

        }

        public void returnDate(String date) {
            // TODO Auto-generated method stub

            txtDate.setText(date);
        }

        }
    }

这项活动有什么问题?

1 个答案:

答案 0 :(得分:0)

您是否已将Android支持库添加到应用程序的 build.gradle

例如:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:+'
}

然后尝试重建它。

例外:

public final EditText txtDate=(EditText) findViewById(R.id.txtDate);

以下这一行

setContentView(R.layout.meals_edit);