datepicker android - 构建错误

时间:2014-02-12 10:41:09

标签: java android android-fragments android-datepicker

在Android开发网站上,我尝试了这个日期选择器http://developer.android.com/guide/topics/ui/controls/pickers.html#ShowingTheTimePicker并将其添加到我日食中的新项目中,但是我遇到了构建错误,请你帮忙吗?

为什么不工作?

错误:

  1. 方法getSupportFragmentManager()未定义类型MainActivity
  2. DatePickerFragment类的非法修饰符;只有公共的,抽象的和允许进入决赛
  3. Java代码:

    package com.example.datepicker;
    
    import java.util.Calendar;
    
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.app.DialogFragment;
    import android.os.Bundle;
    import android.widget.DatePicker;
    
    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
    }
    }
    

    布局文件:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context=".MainActivity" >
    
        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:text="fghgffhf" 
            android:onClick="showDatePickerDialog" />
    
    </RelativeLayout>
    

    DatePickerDialog:

    package com.example.datepicker;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.DialogFragment;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void showDatePickerDialog(View v) {
            DialogFragment newFragment = new DatePickerFragment();
            newFragment.show(getSupportFragmentManager(), "datePicker");
        }
    }
    

    的AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.datepicker"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.datepicker.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

1 个答案:

答案 0 :(得分:1)

  1. 您的MainActivity需要扩展FragmentActivity,它是支持库中Activity的子类,允许您访问支持lib相关的Fragments方法。

  2. 除非是嵌套类,否则不能在java中将类声明为静态。有关详细信息,请查看this question