FindViewById从另一个活动返回null

时间:2019-03-08 09:54:38

标签: c# android xamarin

  • 我正在尝试扩展一个活动,该活动可以处理将在项目的每个活动中进行的工具栏初始化。

  • 在此ToolbarActivity中,当我尝试使用findViewById时,它将返回null

我在这个网站上看了很多主题,但似乎没有一个主题能给我正确答案:

这是我的代码:

    public abstract class ToolBarActivity : AppCompatActivity
{
    private DrawerLayout _drawerLayout;
    private ListView _mLeftDrawer;
    private SupportToolBar _mToolBar;
    private MyActionBarDrawerToggle _mDrawerToggle;
    private List<Tuple<string, int>> _items;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        int layout = GetLayoutResource();
        SetContentView(layout);
        InitToolBar(savedInstanceState);
    }

    /// <summary>
    ///     Initialize the Toolbar and the leftDrawer
    /// </summary>
    /// <param name="savedInstanceState"></param>
    private void InitToolBar(Bundle savedInstanceState)
    {
        _mToolBar = FindViewById<SupportToolBar>(Resource.Id.toolBarMenu);
        _drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawerLayout1);
        _mLeftDrawer = FindViewById<ListView>(Resource.Id.listviewleft);
        InitListView();
        SetSupportActionBar(_mToolBar);
        _mDrawerToggle = new MyActionBarDrawerToggle(this, _drawerLayout, Resource.String.openDrawer,
            Resource.String.Messages);
        _drawerLayout.AddDrawerListener(_mDrawerToggle);
        SupportActionBar.SetDisplayHomeAsUpEnabled(true);
        SupportActionBar.SetHomeButtonEnabled(true);
        _mDrawerToggle.SyncState();
        CheckIfSavedInstance(savedInstanceState);
        _mLeftDrawer.ItemClick += leftDrawer_Clicked;
    }

这是我扩展上一个活动的其他活动,我重新检查了.axml,上面的ID是正确的。

public class MessagesActivity : ToolBarActivity
{

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.MessageSystem);
    }

    protected override int GetLayoutResource()
    {
        return Resource.Layout.MessageSystem;
    }
}

1 个答案:

答案 0 :(得分:0)

将ContentView设置为Activity会使它在该内容XML中查找“工具栏”项,因此始终为null。

删除SetContentView方法可以解决此问题。