0

私はグーグルでいくつかのスタックオーバーフローの回答を読みましたが、ここのレイアウトファイルに問題があると確信しています。また、プロジェクトをクリーンアップしたため、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 ファイルからの私の evaluate メソッドは次のとおりです。

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 に答える