R.string没有编译

时间:2014-10-12 01:57:23

标签: android

如果R.string.start指的是strings.xml文件,那为什么它会给我一个错误“start not not resolved or is a field”错误?它不应该在strings.xml文件中看到这个<string name="start">Starting...</string>并正确编译吗?

<?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>

MainActivity.java

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);
    }

}

1 个答案:

答案 0 :(得分:0)

Android新手?

您需要导入R.

R.java 是一个生成的文件,包含您在XML中声明的所有内容,您需要像任何其他文件一样导入它。

位置是您的项目包名称,因此如果您的包名称是 com.mycoolproject ,则需要执行以下操作:

import com.mycoolproject.R;

然后您可以从项目中引用布局,资源,绘图等等。

当你编写更复杂的程序时,有时你需要不同的 R 。例如,你可能需要使用在android的R中声明的东西,它拥有默认的android资源,比如一些动画和默认样式。在这种情况下,你可以参考这样的事情:

android.R.anim.push_in

此外,如果您包含库项目,则每个库项目都有自己的 R