我编写了一个应该显示按钮的简单应用程序,当点击该按钮时,它将显示文本:“Hello World” - 但它现在所做的一切都在崩溃。
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" >
<TextView
android:id="@+id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text=""
tools:context=".GraphicsActivity" />
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Write Something..."
android:onClick="writeMsg" />
</RelativeLayout>
Android源代码在这里:
public class GraphicsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_graphics);
}
public void WriteMsg() {
Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView tv = (TextView) findViewById(R.id.hello);
tv.setText("Hello World");
setContentView(tv);
}
});
}
}
正如我所说,它所做的一切都是崩溃。顺便说一下,我在模拟器中运行它。
答案 0 :(得分:2)
您的代码有几个问题
a)首先,如果您决定将单击事件附加到XML代码中的Button,则调用的方法应采用View
参数。
签名应该是这样的:
public void WriteMsg(View view) {
}
b)其次,方法的名称应与onClick属性的值相匹配 实际上你有这个用XML:
android:onClick="writeMsg"
这是方法的缩小:
public void WriteMsg()
注意第一个字母是大写的。
c)最后一个,没有必要在button_send
方法中为WriteMsg()
设置点击监听器。您已通过声明onClick
属性附加了单击事件侦听器。这可能会导致其他问题。
因此,您要么删除onClick
属性,要么删除在button_send
方法中为WriteMsg
设置侦听器的代码。
答案 1 :(得分:1)
试试这个
public class GraphicsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_graphics);
Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView tv = (TextView) findViewById(R.id.hello);
tv.setText("Hello World");
}
});
}
}
答案 2 :(得分:0)
public class GraphicsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_graphics);
Button button = (Button) findViewById(R.id.button_send);
WriteMsg();
}
public void WriteMsg() {
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView tv = (TextView) findViewById(R.id.hello);
tv.setText("Hello World");
setContentView(tv);
}
});
}
}
答案 3 :(得分:0)
试试这个
TextView tv = (TextView) findViewById(R.id.hello);
在您的onCreate()
方法中写下此内容。并在按钮的`onClickListener()'中使用Toast
。
Toast.makeText(getApplicationContext(), "Discard", 10000).show();
这会对你有所帮助
答案 4 :(得分:0)
TextView tv = (TextView) findViewById(R.id.hello);
尝试在按钮中找到您的文本视图,而不是在整个布局中(因为方法属于按钮)。 你应该这样做:
public void WriteMsg() {
Button button = (Button) findViewById(R.id.button_send);
final TextView tv = (TextView) findViewById(R.id.hello);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
tv.setText("Hello World");
}
});
}
答案 5 :(得分:0)
例外是
机器人:的onClick = “writeMsg”
但您的活动的onclick功能为WriteMsg
。将其更改为小写writeMsg
。
您最有可能获得方法未找到异常
答案 6 :(得分:0)
public class MainActivity extends Activity {
public TextView tv;
public Button btn_click;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_click = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.textView1);
btn_click.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
writeText("Text to display");
}
});
}
private void writeText(String string) {
tv.setText(string);
}
}