Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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
Android/Java-onbuttonclick中的setText to按钮无法解析方法_Java_Android_Button_Settext - Fatal编程技术网

Android/Java-onbuttonclick中的setText to按钮无法解析方法

Android/Java-onbuttonclick中的setText to按钮无法解析方法,java,android,button,settext,Java,Android,Button,Settext,首先,让我以全新的Android开发作为开场白。当我点击“这个”按钮时,我试图让不同按钮上的文本发生变化。我可以使用setVisibility()很好地更改可见性,因此我认为我正确地引用了按钮-但是当我尝试使用setText()时,我得到了错误:“无法解析方法‘setText(Java.Lang.String)’” 为什么它允许我更改可见性而不是文本?我需要做什么来纠正这个问题 以下是我试图更改其中一个按钮的XML部分: <Button android:layout_width="

首先,让我以全新的Android开发作为开场白。当我点击“这个”按钮时,我试图让不同按钮上的文本发生变化。我可以使用setVisibility()很好地更改可见性,因此我认为我正确地引用了按钮-但是当我尝试使用setText()时,我得到了错误:“无法解析方法‘setText(Java.Lang.String)’”

为什么它允许我更改可见性而不是文本?我需要做什么来纠正这个问题

以下是我试图更改其中一个按钮的XML部分:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/songbutton4"
    android:layout_below="@+id/button4"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignRight="@+id/button4"
    android:layout_alignEnd="@+id/button4"
    android:visibility="invisible" />

你是在片段中还是在活动中

无论如何,你应该:

Button sb1 = (Button) findViewById(R.id.songbutton1);
这就是我们添加元素的方式。如果您在布局中设置按钮小部件,则需要以这种方式引用此小部件。使用()声明正确的类型和类型转换

如果您是在片段中而不是在活动中执行此操作,则还需要将其绑定到适当的视图

Button sb1 = (Button) v.findViewById(R.id.songbutton1);

和建议-不要在listener中获取对视图(小部件)的引用。在听众之前做

首先将按钮分配给一个变量,即:
button btnsog=(button)findViewById(R.id.songbutton4)
然后通过方法
btSong.setOnClickListener()将onclick侦听器设置到按钮这将要求您在按钮内声明一个新的onClickListener,并将创建一个方法,您可以在其中将上述代码放置在该方法下。或者添加一个将按钮直接指向方法的XML属性。

完美解决方案。我试着用你发布的正确代码替换我使用的糟糕的“视图”代码,显然效果很好。感谢您的回答,以及在侦听器之前关于引用小部件的建议。我会记住这一点。[是的,这是一项活动]
Button sb1 = (Button) v.findViewById(R.id.songbutton1);