内部类的意图(SettingsActivity)

时间:2018-10-07 18:02:07

标签: android

在我的Android应用中,如果用户是第一次启动该应用,我需要他们去SettingsActivity$GeneralPreferenceFragmentPreferenceFragment中选择一个国家/地区,然后启动该应用

我该怎么做?我尝试使用

Intent A = newIntent(getBaseContext(), SettingsActivity.GeneralPreferenceFragment.class);
startActivity(A);`

清单:

<activity android:name=".SettingsActivity$GeneralPreferenceFragment"/>

当我运行该应用程序时,它给我这个错误:

  

原因:java.lang.ClassCastException:com.myappname.app.SettingsActivity $ GeneralPreferenceFragment无法转换为android.app.Activity

2 个答案:

答案 0 :(得分:1)

片段不是活动。您不能startActivity(Fragment)

如果您需要在“活动”中显示该片段,则需要使用一些代码和FragmentManager来显示它。

答案 1 :(得分:0)

从未正式鼓励或记录过在运行时在Android上更改语言的信息。资源框架会自动选择与设备最匹配的资源。对于一般的应用程序来说,这种行为就足够了,因此在继续进行操作之前,请确保您有严格的理由对其进行更改。

如果您有理由这样做,则无需使用活动,因为片段(或DialogFragment)足以完成此活动子任务。启动应用程序时,应该在后台隐藏默认的sharedPreference,并检索该语言的键,并且仅在此键值为空时才显示片段/日志;或使用从此值中检索到的特定语言直接启动应用。

如果您使用fragment / DialogFragment,则无需触摸manifest.xml文件或使用意图。