안드로이드에 대한 새로운 브랜드입니다. onClickListener와 함께 사용되는 onClick 메서드의 재정의 인 onClick 메서드를 트리거해야하는 버튼이 있습니다. 문제는 버튼을 누를 때 버튼의 XML에 정의 된 onClick (MainActivity) 메서드를 찾을 수 없다는 IllegalStateException이 발생한다는 것입니다.Android 버튼 IllegalStateException onClick (MainActivity)
아래 코드는 IllegalStateException을 throw하는 코드입니다. 그러나 버튼의 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());
}
}
}
가능성과 방법은
Activity
클래스에 추가되어있는 경우에만 작동합니다 작업 파일에 메소드를 추가 android hello world 프로그램에서 버튼을 클릭하면 [IllegalStateException]이 중복됩니다. (http://stackoverflow.com/questions/15433064/illegalstateexception-when-cl android-hello-world-program) –