CS0117 C# 'Resource.Id' does not contain a

2019-06-26 07:05发布

I use Visual Studio 2015 with Xamarin. I'm naming my project "Phoneword" I see this code such as tutorial/example on Xamarin's site.

The same error for TranslateButton and CallButton members.

MainActivity.cs

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

namespace Phoneword
{
[Activity(Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

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

        // Our code will go here
        // Get our UI controls from the loaded layout:
        EditText phoneNumberText = (EditText)FindViewById(Resource.Id.PhoneNumberText);
        Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
        Button callButton = FindViewById<Button>(Resource.Id.CallButton);

        // Disable the "Call" button
        callButton.Enabled = false;

        // Add code to translate number
        string translatedNumber = string.Empty;

        translateButton.Click += (object sender, EventArgs e) =>
        {
            // Translate user's alphanumeric phone number to numeric
            translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
            if (String.IsNullOrWhiteSpace(translatedNumber))
            {
                callButton.Text = "Call";
                callButton.Enabled = false;
            }
            else
            {
                callButton.Text = "Call " + translatedNumber;
                callButton.Enabled = true;
            }
        };

        callButton.Click += (object sender, EventArgs e) =>
        {
            // On "Call" button click, try to dial phone number.
            var callDialog = new AlertDialog.Builder(this);
            callDialog.SetMessage("Call " + translatedNumber + "?");
            callDialog.SetNeutralButton("Call", delegate {
                // Create intent to dial phone
                var callIntent = new Intent(Intent.ActionCall);
                callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
                StartActivity(callIntent);
            });
            callDialog.SetNegativeButton("Cancel", delegate { });

            // Show the alert dialog to the user and wait for response.
            callDialog.Show();
        };
    }

}
}

Resource/Layout/Main.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:text="Enter a Phoneword"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/PhoneNumberText"
        android:text="1-855-XAMARIN" />
    <Button
        android:text="Translate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/TranslateButton" />
    <Button
        android:text="Call"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/CallButton" />
</LinearLayout>

I'm beginner in Android development, if you need other information i'll try to add more detail. Please help me

6条回答
戒情不戒烟
2楼-- · 2019-06-26 07:10

This kind of thing happens so often in Visual Studio, and wastes so much time.

Try...

Exclude from Project, then Add Existing Item

Works more often than not, much easier to at least try before some of the suggestions above

查看更多
我想做一个坏孩纸
3楼-- · 2019-06-26 07:16

This can also be caused if you have a values XML file that doesn't have a build action of AndroidResource (sometimes VS will create it as a TransformFile)

查看更多
Deceive 欺骗
4楼-- · 2019-06-26 07:19

The issue for me was that I changed the Namespace from the default that was created, after I had been working in the project for a bit.

查看更多
唯我独甜
5楼-- · 2019-06-26 07:23

I faced the same problem following the tutorial Remote Notification with Firebase Cloud Messaging, I one step I had to replace de "activity_main.axml" with a code that introduced the resource

android:id="@+id/msgText"

The application did run fine, but compiler showed the error "resource.id does not contain a definition for msgText", in method MainActivity.OnCreate which invokes it this way:

this.msgText = FindViewById<TextView>(Resource.Id.msgText);

After I closed VS and I restarted it... In the Solution Explorer I selected "Clean >Solution" and after I selected "Rebuild Solution".

worked for me. BTW, I'm running VS2019

查看更多
混吃等死
6楼-- · 2019-06-26 07:24

I have the same error, but my solution itself would still compile.

It's still annoying though to have the error list littered with false errors.

Try this:

  • delete the .vs folder

  • clean solution and then re-open studio,

With these steps I no longer received the false errors. I would recommend trying this for anyone who has a similar situation.

查看更多
聊天终结者
7楼-- · 2019-06-26 07:25

I solved my problem! From Tools/Android SDK Manager I uninstalled:

  • Android SDK Build-tools 24
  • Android N (API 24)

and I installed:

  • Android 6.0 (API 23)
  • Android SDK Build-tools 23.0.3
  • Android SDK Build-tools 23.0.2

After I closed VS and I restarted it... In the Solution Explorer I selected "Clean Solution" and after I selected "Rebuild Solution".

查看更多
登录 后发表回答