Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从操作栏启动设置_Java_Android - Fatal编程技术网

Java 无法从操作栏启动设置

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

开始了解如何创建设置页面,但当我从操作栏选择“设置”时,我的应用程序崩溃,并且在logcat中出现此错误:

原因:java.lang.ClassCastException:com.myexamlpe.thing.Preference无法强制转换为android.app.Activity

以下是我在主课上对它的称呼:

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);
}