Android Studio を使用して最初に開発したプロジェクトがあります。Xamarin (Visual Studio 2015) に変換することにしました。
すべてのコードを何時間も移植した後、設定アクティビティ (PreferenceActivity) を除いてすべてが機能します。設定を構成するPreferenceFragmentsがいくつかありますが、それらのすべてで「フラグメントをインスタンス化できません」と表示されます。これが私が得ている例外です:
Java.Lang.RuntimeException: アクティビティ ComponentInfo を開始できませんパブリックな空のコンストラクター
私は解決策をオンラインで探していましたが、見つけられないようです。どこを見ても、空のパブリックコンストラクターがあることを確認してください。内部クラスが静的でなければならない場合は。しかし、空のコンストラクターがあり、それは内部クラスではなく、独自のファイルにあります。
これが私のSettingsActivity.csです:
namespace test.mypackagename
{
public class SettingsActivity : PreferenceActivity
{
protected override void OnPostCreate(Bundle savedInstanceState)
{
base.OnPostCreate(savedInstanceState);
}
public override void OnBuildHeaders(IList<Header> target)
{
LoadHeadersFromResource(Resource.Xml.pref_headers, target);
}
}
}
ここに私の GeneralPreferenceFragment.cs があります:
namespace test.mypackagename
{
public class GeneralPreferenceFragment : PreferenceFragment
{
public GeneralPreferenceFragment() { }
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
AddPreferencesFromResource(Resource.Xml.pref_general);
}
}
}
そして、ここに私の pref_headers.xml があります:
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="test.mypackagename.GeneralPreferenceFragment"
android:title="@string/pref_header_general" />
<header android:fragment="test.mypackagename.OtherPreferenceFragment1"
android:title="@string/pref_header_other1" />
<header android:fragment="test.mypackagename.OtherPreferenceFragment2"
android:title="@string/pref_header_other2" />
<header android:fragment="test.mypackagename.OtherPreferenceFragment3"
android:title="@string/pref_header_other3" />
<header android:fragment="test.mypackagename.OtherPreferenceFragment4"
android:title="@string/pref_header_other4" />
</preference-headers>
これは以前は問題なく機能していたので、何が問題なのかわかりません。どんな助けでも大歓迎です。