-1

为什么我有mainLayout==null

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);
    SetContentView (Resource.Layout.Main);
    LinearLayout mainLayout = FindViewById<LinearLayout> (Resource.Layout.Main);//return null
    mainLayout.Touch+=(s,e)=>
    {
         //something
    }
}

如何获取 MainLayout 或如何添加事件处理程序 Touch?

资源设计器.cs

public partial class Layout
{
    public const int Main = 2130903041;
    //other
}
4

2 回答 2

5
LinearLayout mainLayout = FindViewById<LinearLayout> 
                                   (Resource.Layout.Main);//return null

您正在使用布局文件作为参数:Resource.Layout.Main

你应该使用的是id你分配给你的 LinearLayout inside Resource.Layout.Main

尝试:

LinearLayout mainLayout = FindViewById<LinearLayout> 
                                   (Resource.Id.linear_layout_id);
于 2013-09-23T20:52:18.197 回答
5

在包含名为“mainLayout”的 LinearLayout 的 XML 上设置一个 ID (android:id="@+id/mainLayoutID")。

然后:


@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Your layout reference
    final LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayoutID);

}
于 2013-09-23T20:57:38.433 回答