我使用了来自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将MainActivity.java中的Activity类替换为FragmentActivity类。但仍然是同一个问题。我哪里错了?
发布于 2013-12-13 21:05:17
导入
import android.support.v4.app.DialogFragment;而不是
import android.app.DialogFragment;如果要使用API11以下的Fragment,则需要导入提供向后兼容性的android.support.v4.app
发布于 2013-12-13 21:32:13
使用以下步骤-
1.更改活动以扩展FragmentActivity类
2.将对getFragmentManager()方法的调用更改为getSupportFragmentManager()方法
3.组织或更新导入
来源-
http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/
https://stackoverflow.com/questions/20567241
复制相似问题