' MyFirstApp.Resource.Id'不包含' myButton'的定义(CS0117)(MyFirstApp)

时间:2014-03-17 21:18:33

标签: android android-layout xamarin

主要活动我正在命名我的项目" MyFirstApp"

    using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace MyFirstApp
{
    [Activity (Label = "MyFirstApp", MainLauncher = true)]
    public class MainActivity : Activity
    {
        int count = 1;

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

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button> (Resource.Id.myButton);

            button.Click += delegate {
                button.Text = string.Format ("{0} clicks!", count++);
            };
        }
    }
}

布局 res / layout

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <EditText
        android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="Enter Message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send"
        android:id="@+id/button_send" />
</LinearLayout>

字符串

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My First App</string>
    <string name="edit_message">Enter a message</string>
    <string name="button_send">Send</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
</resources>

请帮助我,我是Android开发的初学者 如果有什么不清楚,我会尝试添加更多细节 我正在使用Xamarin开发

谢谢

6 个答案:

答案 0 :(得分:5)

添加属性:

android:id="@+id/myButton"

到布局xml文件中的按钮。

然后在您的活动中,您可以找到如下按钮:

Button button = (Button) findViewById(R.id.myButton);

而不是:

Button button = FindViewById<Button> (Resource.Id.myButton);

更新:嗯,我推荐的findViewById是普通的Android,不确定它在Xamarin中是如何工作的,但是肯定你的按钮在xml中需要一个id

更新2:实际上你已经有了Id和你的按钮ID,但它不是myButton,它是button_send ==&gt;所以你可能想要使用那个而不是myButton

答案 1 :(得分:2)

在您的布局中,按钮ID为 - button_send:

android:id="@+id/button_send"

因此,在活动代码中,当您“找到”此按钮时,您应该使用该ID,而不是

Button button = FindViewById<Button> (Resource.Id.myButton);

你应该使用

Button button = FindViewById<Button> (Resource.Id.button_send);

答案 2 :(得分:1)

问题是一些内部脚手架部件正在生成虚假代码,假设按钮的标识添加到布局中。没有任何上下文可以确定为#E; MyButton&#39;支持为漫游添加的两个按钮中的哪一个。我刚刚将其重命名为&#34;翻译按钮&#34;因为我先加了那个按钮。我不确定当我开始使用真实应用时我会做些什么。

在过去,我们会将此类内容提供给内部用户,以确保它是合适的教学材料。

答案 3 :(得分:0)

这是一个奇怪的问题,资源本身存在于与定义所有UI元素的资源不同的命名空间。

尝试使用&#34; MyFirstApp.Android.Resource.Id.button_send&#34;代替。

答案 4 :(得分:0)

面临同样的问题。

您应该执行以下操作:

1)剪切或评论此代码片段:

Button button = FindViewById<Button>(Resource.Id.myButton);
            button.Click += delegate {
                button.Text = string.Format ("{0} clicks!", count++);
            };

2)建立项目

3)在p中添加代码。再次1(粘贴或取消注释)

答案 5 :(得分:-2)

我在Layout中只能看到一个Button,而这个Button的id是button_send。 请使用(Button) findViewById(R.id.button_send);

进行试用