我正在学习Android Studio,并试图制作简单的字典。但是当我开始应用程序btnSearch2.setOnClickListener(this);这段代码给出了一个错误和应用程序崩溃(按钮和按钮2在不同的片段中)。那我该怎么办?
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
这是我定义的变量
EditText editTextSearch;
Button btnSearch;
TextView txtResults;
EditText editTextSearch2;
Button btnSearch2;
TextView txtResults2;
editTextSearch = (EditText) findViewById(R.id.editTxtSearch);
btnSearch = (Button) findViewById(R.id.button);
txtResults = (TextView) findViewById(R.id.txtViewResults );
editTextSearch2 = (EditText) findViewById(R.id.editTxtSearch2);
btnSearch2 = (Button) findViewById(R.id.button2);
txtResults2 = (TextView) findViewById(R.id.txtViewResults2 );
btnSearch.setOnClickListener(this);
btnSearch2.setOnClickListener(this);
最后,这是我的代码。
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
//my code
break;
case R.id.button2:
//my code
break;
}
}
这是因为您的两个按钮(button和button2)位于不同的片段中(如您所说),并且您在一个活动中获取ID,该活动的布局不包含任何具有该特定ID的按钮。因此btnSearch
和btnSearch2
的值是null
。这就是为什么当你应用click listener时,应用程序会崩溃,因为值为null。在活动的布局中创建按钮或获取ID,并在片段中而不是在活动中执行业务逻辑。
您可以从以下网站获取参考:https://www.tutorialspoint.com/fragment-tutorial-with-example-in-android-studio
我们用Android中非常典型的例子去解释它是怎么工作的:View.setOnClickListener()方法。如果我们想用Java的方式去增加点击事件的回调,我首先要编写一个OnClickListener接口: public interface OnClickListener { void onClick(View v); } 然后我们要编写一个匿名内部类去实现这个接口: view.s
在Kotlin中设置click侦听器时,我们可以这样写: SAM转换后,我们可以写: 但我注意到kotlin也接受: 以及 我想知道这里发生了什么?我的意思是应该使用匿名类或SAM速记之类的东西来实现。这是某种中间阶段还是什么? 任何解释或链接到资源是高度赞赏的。
问题内容: 我在登录模式提交按钮的单击侦听器中遇到问题。 这是错误。 我对什么是空指针异常有一个合理的了解,并且已经彻底搜索了一个类似于我的问题。我试图以几种方式重新格式化点击侦听器,确保我具有正确的视图ID等。 显然,还有更多但与我认为无关的话题。这是带有按钮的对话框的XML文件。 任何帮助将不胜感激。 问题答案: 是因为它不属于 当你调用内部的,它要寻找一个你的活动的布局中。 试试这个代替:
我试图通过按cardview开始另一项活动,cardview有一个朋友查找id。但是当我写回家时。java它给了我setOnClickListener中的问题。在homeActivity中,它告诉我无法解析“homeActivity”中的方法“homeActivity”。因为
问题内容: 我收到一个错误,但我不明白是什么原因引起的。 这是生成错误的代码片段: 这是我的文件: 上面的代码导致 ,但是我不明白我正在访问什么空指针,因为我没有使用任何不安全的构造。完整的错误如下: 我该如何解决? 谢谢 问题答案: 您必须先致电才能注册。
节点12.6.0 npm 6.9.0