我从http://developer.android.com/guide/topics/ui/controls/pickers.html获取了示例Date Picker
,当AVD
设置如下时,它运行正常
目标平台4.22和API Level 17
。但是当我使用AVD
设置测试相同的代码时,它会崩溃
目标平台2.2和API Level 8
我的代码看起来像这样
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;
}
}
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类替换为类,如示例中所暗示的那样。但仍然是同一个问题。我哪里错了?
答案 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/