R.string错误无法解析或不是字段

时间:2014-10-12 15:06:36

标签: android

我收到错误"无法解决或不是字段"在这行代码上。

int textString = R.string.start;

strings.xml文件位于res>布局目录,所以它不在另一个包中。 为什么即使在清理和/或重建项目后也会发生此错误?

import com.example.lab08_2hw.R;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;

import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView av; //UI reference
    int textString = R.string.start;
    int backgroundColor = Color.DKGRAY;
    final Handler mHandler = new Handler();
    // Create runnable for posting results to the UI thread
    final Runnable mUpdateResults = new Runnable() {
        public void run() {
            av.setText(textString);
            av.setBackgroundColor(backgroundColor);
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        av = (TextView) findViewById(R.id.computation_status);
        Button actionButton = (Button) findViewById(R.id.action1);
        actionButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                doWork();
            }
        });
    }
    //example of a computationally intensive action with UI updates
    private void doWork() {
        Thread thread = new Thread(new Runnable() {
            public void run() {
                textString=R.id.start;
                backgroundColor = Color.DKGRAY;
                mHandler.post(mUpdateResults);
                computation(1);
                textString=R.id.first;

                backgroundColor = Color.BLUE;
                mHandler.post(mUpdateResults);
                computation(2);
                textString=R.id.second;
                backgroundColor = Color.GREEN;
                mHandler.post(mUpdateResults);
            }
        });
        thread.start();
    }

    final static int SIZE=1000; //large enough to take some time
    double tmp;
    private void computation(int val) {
    for(int ii=0; ii<SIZE; ii++)
        for(int jj=0; jj<SIZE; jj++)
            tmp=val*Math.log(ii+1)/Math.log1p(jj+1);
        }
    }

的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HandlerUpdateUi!</string>
<string name="app_name">HandlerUpdateUi</string>
<string name="action">Press to Start</string>
<string name="start">Starting...</string>
<string name="first">First Done</string>
<string name="second">Second Done</string>
</resources>

3 个答案:

答案 0 :(得分:1)

试试这段代码

 getResources().getString(R.string.start);

答案 1 :(得分:0)

您的代码中存在许多缺陷。与您的问题相关的问题如下:
首先将strings.xml位置更改为res/valuesres > layout目录应该用于您的布局 第二次将int textstring更改为String文本字符串 第三个在String textString = R.string.start;方法中调用此行onCreate()。您现在正在初始化它的地方是错误的。

答案 2 :(得分:0)

将string.xml文件放到values文件夹中。 然后使用以下代码从string.xml文件中获取字符串

getResources()的getString(R.string.start);