日期选择器在AVD Android 2.2 API 8中不起作用

时间:2013-12-13 13:03:22

标签: android datetime datetimepicker

我从http://developer.android.com/guide/topics/ui/controls/pickers.html获取了示例Date Picker,当AVD设置如下时,它运行正常

目标平台4.22和API Level 17。但是当我使用AVD设置测试相同的代码时,它会崩溃

目标平台2.2和API Level 8

我的代码看起来像这样

MainActivity.java

package com.example.datepicker;

import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.View;

@SuppressLint("NewApi")
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @SuppressLint("NewApi")
    public void showTimePickerDialog(View v) {
        DialogFragment newFragment = new ShowCalendar();
        newFragment.show(getFragmentManager(), "datePicker");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

ShowCalendar.java

package com.example.datepicker;

import java.util.Calendar;
import android.annotation.SuppressLint;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.widget.DatePicker;

@SuppressLint("NewApi")
public class ShowCalendar 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
    }

}   

请注意,我已经使用Treid来将Main类与MainActivity.java中的FragmentActivity类替换为类,如示例中所暗示的那样。但仍然是同一个问题。我哪里错了?

2 个答案:

答案 0 :(得分:1)

导入

import android.support.v4.app.DialogFragment;

而不是

import android.app.DialogFragment;

如果您想在API 11下使用Fragment,则需要导入android.support.v4.app,以提供向后兼容性

答案 1 :(得分:1)

使用以下步骤 -

1.更改Activity以扩展FragmentActivity类

2.将对getFragmentManager()方法的调用更改为getSupportFragmentManager()方法

3.组织或更新进口

来源 -

http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/