Java 无法从操作栏启动设置
开始了解如何创建设置页面,但当我从操作栏选择“设置”时,我的应用程序崩溃,并且在logcat中出现此错误: 原因:java.lang.ClassCastException:com.myexamlpe.thing.Preference无法强制转换为android.app.Activity 以下是我在主课上对它的称呼:Java 无法从操作栏启动设置,java,android,Java,Android,开始了解如何创建设置页面,但当我从操作栏选择“设置”时,我的应用程序崩溃,并且在logcat中出现此错误: 原因:java.lang.ClassCastException:com.myexamlpe.thing.Preference无法强制转换为android.app.Activity 以下是我在主课上对它的称呼: public class RCs extends FragmentActivity implements rcfrequency.ToolbarListener, RCBut
public class RCs extends FragmentActivity implements
rcfrequency.ToolbarListener, RCButtons.ToolbarListener {
.
.
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Intent myIntent = new Intent(this, Preference.class);
startActivity(myIntent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
这是我最喜欢的课程:
public class Preference extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
发生此错误是因为您试图将PreferenceFragment作为PreferenceActivity打开 错误被强制转换,因为它的首选项类继承自PreferenceFragment,因此可能不会作为活动打开
Caused by: java.lang.ClassCastException: com.myexamlpe.thing.Preference cannot be cast to android.app.Activity
改为:
public class Preference extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
请参见此处的示例,如何使用PreferenceFragment:
问题是您声明了类首选项扩展了PreferenceFragment,但试图以一个意图开始它。正如Andre所说,您可以通过扩展PreferenceActivity来解决这个问题。或者,您可以使用FragmentManager中的图标来显示您的首选项。这需要了解一些片段以及它们如何与活动交互。这就是建议您应该使用PreferenceFragment而不是PreferenceActivity的意思。谢谢,这就解决了这个问题。我使用的教程说使用PreferenceFragment而不是PreferenceActivity,因为它不再在API 11以上使用。是的,我想我已经推迟学习FragmentManager太久了。我想我会从下一步开始。谢谢
public class Preference extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}