Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在父或父上下文中找不到Onclick方法_Java_Android_Buttonclick_Android Appcompat - Fatal编程技术网

Java 在父或父上下文中找不到Onclick方法

Java 在父或父上下文中找不到Onclick方法,java,android,buttonclick,android-appcompat,Java,Android,Buttonclick,Android Appcompat,我得到一个非常简单的错误。我创建了一个测试按钮和一个onClick方法来更改布局。我用一种简单的方法来做,这样你就能更好地理解我的问题 这是我的按钮方法: public void accountButton (View v){ setContentView(R.layout.activity_start); } 这是我的按钮的xml文件: <Button android:layout_width="wrap_content" android:layout_he

我得到一个非常简单的错误。我创建了一个测试按钮和一个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(视图) 在视图类上定义的android:onClick属性 id为“button”的android.support.v7.widget.AppCompatButton


您不应该调用
setContentView(R.layout.activity\u start)内部
onClick()
按钮的mentod。您必须调用setContentView(R.layout.activity\u start);内部
oncreate()
方法

按照步骤来实现它

  • 在类中实现
    OnClickListener
  • 初始化
    onCreate()中的按钮

  • 按钮设置
    setOnClickListener()
    方法

    btn.setOnClickListener()
    
  • 然后在
    oncreate()之外调用该方法


  • 您不应该调用
    setContentView(R.layout.activity\u start)内部
    onClick()
    按钮的mentod
    。您必须调用setContentView(R.layout.activity\u start);内部
    oncreate()
    方法

    按照步骤来实现它

  • 在类中实现
    OnClickListener
  • 初始化
    onCreate()中的按钮

  • 按钮设置
    setOnClickListener()
    方法

    btn.setOnClickListener()
    
  • 然后在
    oncreate()之外调用该方法


  • 对于那些仍然存在问题的人,在Android Studio或Intellij IDE中,这可能是您正在使用的类(或其前身)的缓存版本,该版本不会被重新编译

    执行“使缓存无效/重新启动”操作,您的问题很可能会消失


    当我反复出现这个问题时,我注意到这是由于Google Drive触发的“文件锁”,它正在复制我的文件。临时禁用解决了我的所有问题。

    对于那些仍然存在问题的人,在Android Studio或Intellij IDE中,这可能是您正在使用的类(或其前身)的缓存版本,不会重新编译

    执行“使缓存无效/重新启动”操作,您的问题很可能会消失


    当我反复出现这个问题时,我注意到这是由于Google Drive触发的“文件锁”,它正在复制我的文件。临时禁用解决了我的所有问题。

    您可能正在从其他活动调用您的
    setContentView
    方法。此方法会使布局膨胀

    如果在布局所属的活动之外调用,则找不到该按钮。从另一个活动初始化活动最常见的方法是通过意图

    Intent intent = new Intent(this, StartActivity.class);
    startActivity(intent);
    

    然后,在活动内部调用
    setContentView(R.layout.your\u activity\u layout)
    以扩大布局。如果执行此操作,您通常可以从活动内部调用xml文件中引用的
    onClick(View View)

    您可能正在从另一个活动调用
    setContentView
    方法。此方法会使布局膨胀

    如果在布局所属的活动之外调用,则找不到该按钮。从另一个活动初始化活动最常见的方法是通过意图

    Intent intent = new Intent(this, StartActivity.class);
    startActivity(intent);
    

    然后,在活动内部调用
    setContentView(R.layout.your\u activity\u layout)
    以扩大布局。如果您这样做,您可以正常地从活动内部调用xml文件中引用的
    onClick(查看视图)

    也发布活动代码。也发布活动代码。我只需要第一句话。应该可以在类似问题的其他版本中找到,我只需要这句话的第一句。应在类似问题的其他版本上提供