【发布时间】:2017-01-29 15:36:45
【问题描述】:
对安卓来说是全新的。我有一个按钮,它应该触发一个 onClick 方法,该方法是对与 onClickListener 一起使用的 onClick 方法的覆盖。问题是,当我按下按钮时会抛出 IllegalStateException,说明按钮的 XML 中定义的 onClick(MainActivity) 方法找不到。
下面的代码是抛出 IllegalStateException 的代码。但是,如果我将按钮的 XML 更改为 android:onClick="onClick" 则该按钮完全可以正常工作。这是为什么呢?
按钮 XML:
<Button
android:text="Accept"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="84dp"
android:id="@+id/button2"
android:onClick="onClick (MainActivity)" />
MainActivity 代码:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements View.OnClickListener{
private TextView textView;
private EditText username;
private EditText password;
private Button accept;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView3);
username = (EditText) findViewById(R.id.editText);
password = (EditText) findViewById(R.id.editText2);
accept = (Button) findViewById(R.id.button2);
}
public void logIn(View view)
{
Log.i("testUsername", username.getText().toString());
Log.i("testPassword", password.getText().toString());
}
@Override
public void onClick(View view)
{
if((Button)view == accept)
{
Log.i("testUsername", username.getText().toString());
Log.i("testPassword", password.getText().toString());
}
}
}
【问题讨论】:
标签: android