id无法解析或不是字段,Button侦听器

时间:2013-12-05 20:02:40

标签: android

我很确定我在这里错过了一些非常简单的东西......我是android的新手,所以我很抱歉。我认为我没有正确地将按钮链接到听众,基本上我认为我正在做的是制作一个列表器(用于按钮)并检查哪个按钮被按下,

MainMenu.java

package com.coursework;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class mainMenu extends Activity{

    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.mainmenu);

    TextView txt = (TextView) findViewById(R.id.gameName);
    Typeface font = Typeface.createFromAsset(getAssets(), "RetroElectro.ttf");
    txt.setTypeface(font);


    Button.OnClickListener listener = new Button.OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.id == R.id.play){
                Log.w("Test","one");
            }
else if(v.id == R.id.options){
                Log.w("Test","one");
            }

        }

};
((Button)findViewById(R.id.play)).setOnClickListener(listener);

}   }

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 
>

      <TextView 
    android:id="@+id/gameName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="@string/gameName"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:layout_marginTop="20dp"
    android:textSize="80sp"
    />

  <Button
    android:layout_width="@dimen/button"
    android:id="@+id/play"
    android:layout_height="wrap_content"       
    android:layout_centerHorizontal="true"
    android:layout_marginTop="120dp"
    android:text="@string/play"></Button>




  <Button
    android:layout_width="@dimen/button"
    android:id="@+id/options"
    android:layout_height="wrap_content"       
    android:layout_centerHorizontal="true"
    android:layout_below="@id/play"
    android:text="@string/options"></Button>
   <Button
    android:layout_width="@dimen/button"
    android:id="@+id/scoreboard"
    android:layout_height="wrap_content"       
    android:layout_centerHorizontal="true"
    android:layout_below="@id/options"
    android:text="@string/score"></Button>
    <Button
    android:layout_width="@dimen/button"
    android:id="@+id/exit"
    android:layout_height="wrap_content"       
    android:layout_centerHorizontal="true"
    android:layout_below="@id/scoreboard"
    android:text="@string/exit"></Button>

</RelativeLayout>

问题的部分是行if(v.id == R.id.play){if(v.id == R.id.play){,错误,

id cannot be resolved or is not a field

3 个答案:

答案 0 :(得分:2)

不是v.id

调用方法getId()它将返回视图的标识符。

例如:

v.getId()

那是:

if(v.getId() == R.id.play){ 

//statements 

}

http://developer.android.com/reference/android/view/View.html#getId()

答案 1 :(得分:0)

您应该使用.getId()而不是.id

像这样:

v.getId();

答案 2 :(得分:-1)

尝试导入应用的R文件,例如:

import com.coursework.R;