打开设置中的Activity是简单的,只需要得到启动该Activity的Intent过滤器即可,但是要启动该Activity中的一个Fragment就不能采取这种方式了。
通过实验,采取了这种方式:先启动Activity,然后在Activity可见的时候立马启动Fragment。以选择时区Fragment为例:
首先启动Activity:
case R.id.time_zone:
Intent intent = new Intent("android.settings.DATE_SETTINGS");
intent.putExtra("type", 1); //区别是否从设置中打开还是外部直接打开
startActivity(intent);
然后在Settings中修改DateTimeSettings.java类,添加onStart():
@Override
public void onStart() {
// TODO Auto-generated method stub
Intent intent = getIntent();
int type = intent.getIntExtra("type", 0);
if (type == 1) {
Preference timeZone = findPreference("timezone");
onPreferenceTreeClick(timeZone); //模拟点击事件
finish();
}
super.onStart();
}