【问题标题】:Intent to inner class ( SettingsActivity)内部类的意图(SettingsActivity)
【发布时间】:2018-10-07 18:02:06
【问题描述】:

在我的 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

【问题讨论】:

  • GeneralPreferenceFragment 无法强制转换为 android.app.Activity 错误还不够清楚吗?我希望用户在询问之前已经阅读了错误......无论如何,欢迎来到 Stack Overflow。

标签: android android-intent preferencefragment


【解决方案1】:

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

如果您需要在 Activity 中显示该 Fragment,则需要使用一些代码和 FragmentManager 来显示它。

【讨论】:

    【解决方案2】:

    资源框架会自动选择与设备最匹配的资源。这样的行为对于常见的应用程序来说已经足够了,所以在继续之前,请确保您有严格的理由来更改它。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      相关资源
      最近更新 更多