1

私の問題は、フラグメント内に含まれるボタンが「未処理の例外 - オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生することです。 私はレイアウトこれにより、エラーが発生しないボタンが含まれています。誰かが私がやっていることにいくらかの光を当てることができれば、それはすばらしいことになるでしょう。私は断片を使うのが初めてで、活動とは違った働きをしていることを知っているので、いくつかの重要なコードがないか、完全に混乱していると思います。 ボタンはフラグメント内では機能しません

この

は私MainActivityです:

public class MainActivity : ActionBarActivity 
{ 
    private SupportToolbar mToolbar; 
    private MyActionBarDrawerToggle mDrawerToggle; 

    private DrawerLayout mDrawerLayout; 
    private ListView mLeftDrawer; 

    private HomeFragment mHomeFragment; 
    private LogInFragment mLogInFragment; 
    private MatchCentreFragment mMatchCentreFragment; 
    private PrevCompFragment mPrevCompFragment; 
    private PrevFixFragment mPrevFixFragment; 
    private SettingsFragment mSettingsFragment; 
    private SocialFragment mSocialFragment; 
    private UpcomCompFragment mUpcomCompFragment; 
    private UpcomFixFragment mUpcomFixFragment; 

    private SupportFragment mCurrentFragment = new SupportFragment(); 
    private Stack<SupportFragment> mStackFragments; 

    private ArrayAdapter mLeftAdapter; 

    private List<string> mLeftDataItems; 

    protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     SetContentView(Resource.Layout.Main); 

     mToolbar = FindViewById<SupportToolbar>(Resource.Id.toolbar); 
     mDrawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout); 
     mLeftDrawer = FindViewById<ListView>(Resource.Id.left_drawer); 

     mHomeFragment = new HomeFragment(); 
     mLogInFragment = new LogInFragment(); 
     mMatchCentreFragment = new MatchCentreFragment(); 
     mPrevCompFragment = new PrevCompFragment(); 
     mPrevFixFragment = new PrevFixFragment(); 
     mSettingsFragment = new SettingsFragment(); 
     mSocialFragment = new SocialFragment(); 
     mUpcomCompFragment = new UpcomCompFragment(); 
     mUpcomFixFragment = new UpcomFixFragment(); 

     mStackFragments = new Stack<SupportFragment>(); 

     mLeftDrawer.Tag = 0; 

     SetSupportActionBar(mToolbar); 


     mLeftDataItems = new List<string>(); 
     mLeftDataItems.Add("Home"); 
     mLeftDataItems.Add("Log In"); 
     mLeftDataItems.Add("Match Centre"); 
     mLeftDataItems.Add("Previous Fixtures"); 
     mLeftDataItems.Add("Upcoming Fixtures"); 
     mLeftDataItems.Add("Previous Competitions"); 
     mLeftDataItems.Add("Upcoming Competitions"); 
     mLeftDataItems.Add("Settings"); 
     mLeftDataItems.Add("Social"); 

     mLeftAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, mLeftDataItems); 
     mLeftDrawer.Adapter = mLeftAdapter; 
     mLeftDrawer.ItemClick += MenuListView_ItemClick; 

     mDrawerToggle = new MyActionBarDrawerToggle(this, mDrawerLayout, Resource.String.openDrawer, Resource.String.closeDrawer); 

     if (bundle != null) 
     { 
      if (bundle.GetString("DrawerState") == "Opened") 
      { 
       SupportActionBar.SetTitle(Resource.String.openDrawer); 
      } 
      else 
      { 
       SupportActionBar.SetTitle(Resource.String.closeDrawer); 
      } 
     } 
     else 
     { 
      SupportActionBar.SetTitle(Resource.String.closeDrawer); 
     } 

     Android.Support.V4.App.FragmentTransaction trans = SupportFragmentManager.BeginTransaction(); 

     trans.Add(Resource.Id.fragmentContainer, mHomeFragment); 
     trans.Add(Resource.Id.fragmentContainer, mLogInFragment); 
     trans.Hide(mLogInFragment); 
     trans.Add(Resource.Id.fragmentContainer, mMatchCentreFragment); 
     trans.Hide(mMatchCentreFragment); 
     trans.Add(Resource.Id.fragmentContainer, mPrevFixFragment); 
     trans.Hide(mPrevFixFragment); 
     trans.Add(Resource.Id.fragmentContainer, mUpcomFixFragment); 
     trans.Hide(mUpcomFixFragment); 
     trans.Add(Resource.Id.fragmentContainer, mPrevCompFragment); 
     trans.Hide(mPrevCompFragment); 
     trans.Add(Resource.Id.fragmentContainer, mUpcomCompFragment); 
     trans.Hide(mUpcomCompFragment); 
     trans.Add(Resource.Id.fragmentContainer, mSettingsFragment); 
     trans.Hide(mSettingsFragment); 
     trans.Add(Resource.Id.fragmentContainer, mSocialFragment); 
     trans.Hide(mSocialFragment); 



     mCurrentFragment = mHomeFragment; 
     trans.Commit(); 

    } 


    void MenuListView_ItemClick (object sender, AdapterView.ItemClickEventArgs e) 
    { 
     Android.Support.V4.App.Fragment fragment = null; 

     switch (e.Id) 
     { 
      case 0: 
       ShowFragment(mHomeFragment); 
       break; 
      case 1: 
       ShowFragment(mLogInFragment); 
       break; 
      case 2: 
       ShowFragment(mMatchCentreFragment); 
       break; 
      case 3: 
       ShowFragment(mPrevFixFragment); 
       break; 
      case 4: 
       ShowFragment(mUpcomFixFragment); 
       break; 
      case 5: 
       ShowFragment(mPrevCompFragment); 
       break; 
      case 6: 
       ShowFragment(mUpcomCompFragment); 
       break; 
      case 7: 
       ShowFragment(mSettingsFragment); 
       break; 
      case 8: 
       ShowFragment(mSocialFragment); 
       break; 
     } 

     mDrawerLayout.CloseDrawers(); 
     mDrawerToggle.SyncState(); 
    } 

    private void ShowFragment (SupportFragment fragment) 
    { 
     if (fragment.IsVisible) 
     { 
      return; 
     } 
     var trans = SupportFragmentManager.BeginTransaction(); 

     fragment.View.BringToFront(); 
     mCurrentFragment.View.BringToFront(); 

     trans.Hide(mCurrentFragment); 
     trans.Show(fragment); 

     trans.AddToBackStack(null); 
     mStackFragments.Push(mCurrentFragment); 
     trans.Commit(); 

     mCurrentFragment = fragment; 


    } 
    public override bool OnOptionsItemSelected(IMenuItem item) 
    { 
     switch (item.ItemId) 
     { 

      case Android.Resource.Id.Home: 
       //The hamburger icon was clicked which means the drawer toggle will handle the event 


       mDrawerToggle.OnOptionsItemSelected(item); 
       return true; 

      case Resource.Id.action_refresh: 
       //Refresh 
       return true; 

      case Resource.Id.action_help: 


       return true; 

      default: 
       return base.OnOptionsItemSelected(item); 
     } 
    } 

    public override bool OnCreateOptionsMenu(IMenu menu) 
    { 
     MenuInflater.Inflate(Resource.Menu.drawer_menu, menu); 
     return base.OnCreateOptionsMenu(menu); 
    } 

    protected override void OnSaveInstanceState(Bundle outState) 
    { 
     if(mDrawerLayout.IsDrawerOpen((int)GravityFlags.Left)) 
     { 
      outState.PutString("DrawerState", "Opened"); 
     } 
     else 
     { 
      outState.PutString("DrawerState", "Closed"); 
     } 

     base.OnSaveInstanceState(outState); 
    } 

    protected override void OnPostCreate(Bundle savedInstanceState) 
    { 
     base.OnPostCreate(savedInstanceState); 
     mDrawerToggle.SyncState(); 
    } 

    public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig) 
    { 
     base.OnConfigurationChanged(newConfig); 
     mDrawerToggle.OnConfigurationChanged(newConfig); 
    } 

} 

}

これは私の断片の一つである}

public class PrevFixFragment : Android.Support.V4.App.Fragment 
{ 
    Button button; 


    public PrevFixFragment() 
    { 

    } 
    public static Android.Support.V4.App.Fragment newInstance(Context context) 
    { 
     PrevFixFragment fragment = new PrevFixFragment(); 
     return fragment; 
    } 
    public override void OnCreate(Bundle bundle) 
    { 


     base.OnCreate(bundle); 

    } 
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View view = inflater.Inflate(Resource.Layout.PreviousFixtures, null); 

     button = View.FindViewById<Button>(Resource.Id.upcombutton); 
     button.Click += StartNewActivity; 

     return view; 

    } 

    void StartNewActivity(object sender, EventArgs e) 
    { 
     Intent intent = new Intent(Activity, typeof(UpcomFixActivity)); 
     StartActivity(intent); 
    } 


} 

(がいくつかあるが、それらはすべて基本的に、これまでと同じコードが含まれています)

答えて

0

次の行をに移動してみてください乗車ボイドがまたはオーバーライドボイドは

button = View.FindViewById<Button>(Resource.Id.upcombutton); 
    button.Click += StartNewActivity; 
+0

笑ありがとうございました!! – Rachel

0

をonActivityCreatedあなたは以下のステートメントで小文字viewViewを記述する必要がありOnViewCreated:

button = View.FindViewById<Button>(Resource.Id.upcombutton); 
関連する問題