0

我已经用谷歌搜索并阅读了几个 Stack Overflow 的答案,我很确定问题出在我的布局文件上。我还清理了我的项目,所以我的 R.java 文件被删除了,但我认为在我发现错误之后它会自动生成。

这是我的 XML 代码。

<LinearLayout 
    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:orientation="vertical"
    android:padding="20sp"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/update"
        android:textSize="25sp" />

    <EditText
        android:id="@+id/guess"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:textSize="26sp" />

    <TextView
        android:id="@+id/display"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="6sp"
        android:paddingTop="6sp"
        android:text="@string/default"
        android:textSize="18sp" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="evaluate"
        android:text="@string/btn" />

</LinearLayout>

以下是显示错误的 java 行,以防此处出现问题:

Button button = (Button) view;
TextView log = (TextView)(findViewById(R.id.display));
EditText field = (EditText)(findViewById(R.id.guess));

更新:这是我在 MainActivity.java 文件中的评估方法

public void evaluate(View view)
{
    Button button = (Button) view;
    TextView log = (TextView)(findViewById(R.id.display));
    EditText field = (EditText)(findViewById(R.id.guess));

    if(button.getText().toString().charAt(0) == 'S')
    {
        int guess = Integer.parseInt(field.getText().toString());
        if(guess == num)
        {
            log.setText("Congratulations! You guessed it in " + guessCount + "moves");
            button.setText("New game");
        }
        else
        {
            guessCount++;
            if(guess < num)
                log.setText("Try again. Too low");
            else
                log.setText("Try again. Too high");
        }
    }
    else
        refresh(button, log);
}
4

2 回答 2

2

R.javares只要文件夹或文件中存在任何编译错误,就会被删除AndroidManifest.xml。假设您没有编译错误(除了应该引用 R.java 中的字段的文件),我的第一个调用是查看evaluate方法以查看它是否在当前调用Activity中,如下所示:

Java 代码:

public class MyActivity extends Activity {
    Button button;
    TextView log;
    EditText field;
    ...
    ...

    @Override
    public void onCreate(Bundle savedInstanceState) {
        button = (Button) new Button(this);
        log = (TextView) findViewById(R.id.display);
        field = (EditText) findViewById(R.id.guess);
        ...
        ...
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                evaluate(v);
            }
        });
    }
    ...
    ...
    // **evaluate** is visible(public) and 
    // within the same activity where the **button** is
    public void evaluate(View v) { 
        ...
        ...

    }
}

`

于 2013-01-20T07:55:39.427 回答
0

eclipse 不会在 res 的文件夹中显示任何错误吗?

在:android:onClick="evaluate"的行中,我以前没有见过这样的值,对吗?

于 2013-01-20T07:28:42.900 回答