我是Android编程的新手,我正在尝试制作一个简单的按钮,点击时会显示一个Toast通知。
我尝试在我的MainActivity中初始化一个名为“button”的按钮,如下所示:
public class MainActivity extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button =(Button)findViewById(R.id.button1);
button.setOnClickListener(this);
}
public void onClick(View v){
Toast toast = Toast.makeText(this, "Click Me", Toast.LENGTH_LONG);
toast.show();
}
}
此外,还有activity_main.xml:
<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">
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button1">
</Button>
</RelativeLayout>
更新:findViewById现在可以在导入android.R后正常工作。但是,当我调用setContentView(R.layout.activity_main);
时,这会产生一个新错误
答案 0 :(得分:2)
这里有一点背景知识。 strings.xml用于定义文本片段。例如,可能出现在按钮上的文本(但这不会定义按钮本身)。
该按钮必须在res / layout /目录中的布局文件中定义。您的可能称为activity_main.xml。
您需要在此文件中创建一个按钮元素,并将ID分配给描述性内容。这种id是findViewById
要搜索的内容。
一个例子:
<Button
android:id="@+id/thebuttonsid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="96dp"
android:text="@string/button1" />
您可以像这样获得此按钮的句柄:
Button button = (Button)findViewById(R.id.thebuttonsid);
请注意我如何将文字设置为@string/button1
?这就是strings.xml文件的用途。但是,布局目录中的布局文件是您定义按钮等控件的位置。
答案 1 :(得分:0)
按钮的ID名称与按钮的文本名称相同。你最好把任何一个改成其他名字。它一定是工作。
答案 2 :(得分:0)
我会清理项目并重新构建。或者重新进口项目。 Eclipse是......很难使用。尝试使用Android Studio。
答案 3 :(得分:0)
当资源清理时出现“不匹配”时,项目是一个很好的建议。在过去,情况更是如此。 接下来我会检查你的资源是否如此编译。您的资源中某处可能存在错误,因此R会对网络进行编译,并且对R.id. *的任何引用都无效。