无法在Java(Android)中引用XML字符串资源

时间:2015-03-06 01:41:29

标签: android xml string reference

我不能为我的生活弄清楚为什么这不起作用。我试图在我的Java代码中引用strings.xml文件中的字符串。出于某种原因,我可以引用同一个xml文件中的每个字符串,除了我需要引用的两个字符串。我不知道我是否清楚地说出来,但下面是我目前的代码,所以我可以更好地证明这一点:

MainActivity.java

package bcs421.jorgeramirez.hwk.hellogoodbye;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button greetButton = (Button)findViewById(R.id.greetingButton);
    Button goodbyeButton = (Button)findViewById(R.id.goodbyeButton);
    greetButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Toast greeting;
            Context context;
            CharSequence text = getString(R.string.greeting_toast);
            int duration = Toast.LENGTH_SHORT;
            greeting.makeText(context, text, duration);

        }
    });
}
}

的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">Hello/Goodbye</string>
<string name="hello_world">Hello world!</string>
<string name="language">English</string>
<string name="greeting_msg">Greetings!</string>
<string name="goodbye_msg">Goodbye!</string>
<string name="greeting_toast">Hello!</string>
<string name="goodbye_toast">See you later!</string>

</resources>

顺便说一句,我的项目没有完成,但我无法弄明白为什么     getString(R.string.greeting_msg);

有效,但

getString(R.string.greeting_toast);

不起作用。我的XML文件中的每个其他字符串都可以在我的Java文件中引用,除了最后两个,&#34; greeting_toast&#34;和#34; goodbye_toast&#34;。任何帮助将不胜感激!!提前谢谢!

2 个答案:

答案 0 :(得分:0)

  1. 您的项目是否包含错误,因此无法构建并且无法重新生成R?
  2. 确保其他区域/分辨率的其他strings.xml也包含R.string.greeting_toast。
  3. 清理并重建您的项目

答案 1 :(得分:0)

我不知道它在IDE上是如何工作的,但是我的Android Studio显示了一些错误..

删除此行:

Toast greeting;

你必须得到你的上下文,因为我猜你的代码上下文是null。

然后你必须通过添加.show()

来展示你的吐司
Context context = getApplicationContext();
CharSequence text = getString(R.string.greeting_toast);
int duration = Toast.LENGTH_SHORT;

Toast.makeText(context, text, duration).show();'

您也可以将其缩短为一行,如下所示:

Toast.makeText(getApplicationContext(), R.string.greeting_toast, Toast.LENGTH_SHORT).show();