我在speed = (TextView) findViewById(R.id.speed);
中收到错误,说“速度无法解决或者不是字段”。
我的布局是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SpeedometerActivity" >
<Button
android:id="@+id/download"
android:layout_width="150dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="13dp"
android:layout_marginLeft="300dp"
android:text="Begin Test" />
<TextView
android:id="@+id/speed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/meter"
android:layout_marginLeft="191dp"
android:layout_marginTop="55dp"
android:layout_toRightOf="@+id/meter"
android:text="TextView"
android:textSize="20dp"
android:textColor="#000000"/>
</RelativeLayout>
我的MainActivity
:
public class MainActivity extends Activity {
TextView speed;
Button download;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.speedometer);
download = (Button)findViewById(R.id.download);
}
@Override
protected void onResume() {
super.onResume();
h = new Handler();
new speedTask().execute();
speed = (TextView) findViewById(R.id.speed);
}
}
请有人帮我解决这个问题。
答案 0 :(得分:4)
"speed cannot be resolved or it is not a field"
检查资源文件中是否有任何错误。按照黑带的建议。如果资源文件中有错误,则不会生成R.java。修理它。还要检查您是否import android.R;
如果删除它。
你还有
<TextView
android:id="@+id/speed"
它是一个文本视图
将其投射到按钮
speed = (Button)findViewById(R.id.speed);
应该是
TextView speed =(TextView) findViewById(R.id.speed);
答案 1 :(得分:2)
您应该检查导入的R
类是否是您的项目而不是Android的类。你正在向错误的对象施放,正如@Raghunandan
答案 2 :(得分:1)
这里是类型转换TextView到Button。所以请更改您的代码如下。
TextView speed = (Button)findViewById(R.id.speed);
注意:在这里您无法导入项目R文件,首先请检查您的xml文件并尝试首先解决xml错误。
如果您已导入,请从活动中删除import android.R;
。
转到MainActivity.Java文件,然后按 CTRL + SHIFT + O 。它会自动导入所有必要的包。
答案 3 :(得分:0)
它创建了一个副本,所以给出如下
<!-- language: html -->
<!DOCTYPE html>
<html>
<head>
<html>
<head>
<script>
// Retrieve last key pressed. Works in IE and Netscape.
// Returns the numeric key code for the key pressed.
function getKey(e)
{
if (window.event)
return window.event.keyCode;
else if (e)
return e.which;
else
return null;
}
function restrictChars(e, obj)
{
var CHAR_AFTER_DP = 3; // number of decimal places
var validList = "0123456789."; // allowed characters in field
var key, keyChar;
key = getKey(e);
if (key == null) return true;
// control keys
// null, backspace, tab, carriage return, escape
if ( key==0 || key==8 || key==9 || key==13 || key==27 )
return true;
// get character
keyChar = String.fromCharCode(key);
// check valid characters
if (validList.indexOf(keyChar) != -1)
{
// check for existing decimal point
var dp = 0;
if( (dp = obj.value.indexOf( ".")) > -1)
{
if( keyChar == ".")
return false; // only one allowed
else
{
// room for more after decimal point?
if( obj.value.length - dp <= CHAR_AFTER_DP)
return true;
}
}
else return true;
}
// not a valid character
return false;
}
</script>
</head>
<body>
<form name="test">
Input Number <input type="text" name="myNum" onKeyPress="return restrictChars(event, this)">
</form>
</body>
它会起作用!