2017-04-04 11 views
-4

Visual Studioでタブ付きのビューを持つスケルトンアプリケーションを作成する。 1つのタブは設定用ですが、設定APIを使用する際に問題があります。 私はこのエラーを取得する:VS 2017 - xamarin - TabHost環境設定TAB

android.view.Viewがandroid.view.ViewGroup

にキャストすることはできませんがここでは、コードです:

見つかり
//*********************** 
//class for settings tab 
//*********************** 
    [Activity(Label = "Settings")] 
    [MetaData(PreferenceManager.MetadataKeyPreferences, Resource = "@drawable/preferences")] 
    public class Settings : Activity 
    { 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 

      base.OnCreate(savedInstanceState); 
      View vg = new View(this); 
      TextView textview = new TextView(vg.Context); 
      textview.Text = "This is the Settings Tab"; 
      SetContentView(vg); 
      textview.Id = TextView.GenerateViewId(); 
      vg.Id = View.GenerateViewId(); 
      FragmentTransaction fragmentTx = this.FragmentManager.BeginTransaction(); 
      SettingsFragment cfg = new SettingsFragment(); 

      fragmentTx.Add(vg.Id, cfg); 

      // Commit the transaction. 
      fragmentTx.Commit(); 
     } 
    } 

    public class SettingsFragment : PreferenceFragment 
    { 

     public override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 
      AddPreferencesFromResource(Resource.Xml.preferences); 
      /*var intent = new Intent(this.Activity, typeof(Settings)); 
      AddPreferencesFromIntent(intent);*/ 
     } 



    } 
+0

somewere掲載似た何かがあるかどうジャスト尋ね:でframeLayoutに置き換え見ます!ガイドを読むことは私にとってははっきりしているようですが、実際には私は殴られます!私の目標に達するために、より具体的な質問を投稿します。 :-) – user3546624

答えて

0

保護されたオーバーライド無効のOnCreate(バンドルsavedInstanceState) {

base.OnCreate(savedInstanceState); 
    FrameLayout frame = new FrameLayout(this); 
    SetContentView(frame); 
    frame.Id = FrameLayout.GenerateViewId(); 
    FragmentTransaction fragmentTx = this.FragmentManager.BeginTransaction(); 
    SettingsFragment cfg = new SettingsFragment(); 
    fragmentTx.Add(frame.Id, cfg); 
    // Commit the transaction. 
    fragmentTx.Commit(); 
}