为什么我的R.java文件没有从我的XML文件生成显示ID或button1 id?

时间:2013-01-20 07:19:29

标签: android xml eclipse android-layout r.java-file

我已经使用Google搜索并阅读了几个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);
}

2 个答案:

答案 0 :(得分:2)

只要R.java文件夹或res文件中存在任何编译错误,就会删除

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) { 
        ...
        ...

    }
}

`

答案 1 :(得分:0)

eclipse不显示红色文件夹中的任何错误吗?

在以下行中: android:onClick =“evaluate”,我之前没有见过这样的价值,是不是正确?