我收到一个非常简单的错误。我已经创建了一个测试按钮和一个onClick方法来改变布局。以简单的方式做到了这一点,以便你能更好地理解我的问题。
这是我的按钮方法
public void accountButton (View v){
setContentView(R.layout.activity_start);
}
这是我按钮的xml文件
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:id="@+id/button"
android:layout_below="@+id/welcomeTxt"
android:layout_centerHorizontal="true"
android:layout_marginTop="149dp"
android:onClick="accountButton"
android:nestedScrollingEnabled="true" />
单击按钮
时出现以下错误java.lang.IllegalStateException:找不到方法 accountButton(View)在父级或祖先语境中 android:在视图类上定义的onClick属性 带有id&#39;按钮&#39;
的android.support.v7.widget.AppCompatButton
答案 0 :(得分:0)
你不应该在按钮的setContentView(R.layout.activity_start);
内召唤onClick()
。你必须调用setContentView(R.layout.activity_start);在oncreate()
方法内。
按照步骤来实现它。
OnClickListener
初始化onCreate()
Button button = (Button) findViewById(R.id.button);
为按钮
设置setOnClickListener()
方法
btn.setOnClickListener()
然后调用oncreate()
public void accountButton (View v){ //do some thing which you want }
答案 1 :(得分:0)
对于那些仍然有问题的人,在Android Studio或Intellij IDE中,这很可能是您正在使用的类(或其前身)的缓存版本,不会重新编译。
执行“无效的缓存/重新启动”,您的问题很可能会消失。
当我反复发生此问题时,我注意到这是由于Google云端硬盘触发了“文件锁定”,正在复制我的文件。临时禁用功能解决了我所有的问题。
答案 2 :(得分:0)
您可能正在其他活动中调用setContentView
方法。此方法使布局膨胀。
如果在布局所属的活动之外调用该按钮,则不会找到该按钮。将活动初始化为另一个活动的最常见方法是故意。
Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);
然后,在您的活动中调用setContentView(R.layout.your_activity_layout)
来增加布局。如果执行此操作,则可以正常从活动内部调用xml文件中引用的onClick(View view)
。