我收到错误"无法解决或不是字段"在这行代码上。
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>
答案 0 :(得分:1)
试试这段代码
getResources().getString(R.string.start);
答案 1 :(得分:0)
您的代码中存在许多缺陷。与您的问题相关的问题如下:
首先将strings.xml位置更改为res/values
。 res > layout
目录应该用于您的布局
第二次将int textstring
更改为String
文本字符串
第三个在String textString = R.string.start;
方法中调用此行onCreate()
。您现在正在初始化它的地方是错误的。
答案 2 :(得分:0)
将string.xml文件放到values文件夹中。 然后使用以下代码从string.xml文件中获取字符串
。getResources()的getString(R.string.start);