1

我正在尝试制作一个 Hello World 应用程序。这是我正在使用的教程的链接。

我已成功通过“使用代码创建用户界面”并看到该应用程序在模拟器中运行,但是当我进入“创建字符串资源”时遇到了一些麻烦。我将我的 Strings.xml 文件更改为:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="helloButtonText">Say Hello</string>
        <string name="helloLabelText">Hello Mono for Android</string>
    </resources> 

正如它所说的那样,然后我更改了 Activity1.cs 中的行,所以它是:

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

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

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

        //Create the user interface in code
        var layout = new LinearLayout (this);
        layout.Orientation = Orientation.Vertical;

        var aLabel = new TextView (this);
        //old line aLabel.Text = "Hello, Mono for Android";
        aLabel.SetText (Resource.String.helloLabelText);

        var aButton = new Button (this);     
        //old line aButton.Text = "Say Hello";
        aButton.SetText (Resource.String.helloButtonText);

    aButton.Click += (sender, e) => {
        aLabel.Text = "Hello from the button";
    }; 
    layout.AddView (aLabel);
    layout.AddView (aButton);          
    SetContentView (layout);
    }
        };
    }
}

}

然后,当我尝试运行时,我收到错误消息:找不到与给定名称匹配的资源(在“文本”处,值为“@string/hello”),它说它位于 Main.axml 的第 2 行,所以这里是代码:

<?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">
<Button
    android:id="@+id/myButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />
</LinearLayout>

我尝试过其他 Android 教程,但似乎总是卡在向 Strings.xml 文件添加内容的部分。我对此问题的解决方案将不胜感激。

4

2 回答 2

2
<Button
    android:id="@+id/myButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

按钮 XML 上的最后一个属性(即android:text="@string/hello")试图将文本设置为字符串 resource 的值hello。您还没有定义hello在您的 strings.xml 文件中命名的字符串资源。您需要定义一个,或使用不同的,例如helloButtonText

<Button
    android:id="@+id/myButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/helloButtonText" />

或者,由于您似乎是以编程方式而不是通过您定义的 XML 设置视图,因此您现在可以完全摆脱 XML 布局文件。您似乎没有在任何地方使用它。

于 2012-06-07T16:14:11.147 回答
1

您的问题是它(hello字符串)不存在。您创建了helloButtonTextand helloLabelText,但没有hello

将您的按钮 xml 更改为此,它应该可以工作:

<Button 
    android:id="@+id/myButton" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/helloButtonText" /> 
于 2012-06-07T16:11:14.037 回答