gpt4 book ai didi

java - 安卓 : calling a user defined method causing application misbehave

转载 作者:行者123 更新时间:2023-12-02 04:04:00 25 4
gpt4 key购买 nike

    public void onClick(View v) {
Level1 ob = new Level1();
ob.checkAns();
int id = v.getId();
String typed = ans.getText().toString();

String resourceName = getResources().getResourceEntryName(id);
ans.setText(typed + resourceName);


// String check =ans.getText().toString();
//
// if(check.equalsIgnoreCase("ABC")){
// Toast.makeText(Level1.this, "correct" ,Toast.LENGTH_SHORT).show();
// }
// else {
// Toast.makeText(Level1.this, "NO" ,Toast.LENGTH_SHORT).show();
// }
// }

给定的代码是我的 onClick() 方法。评论区是我有兴趣制定方法的部分。像这样:

public  void checkAns() {
String check =ans.getText().toString();

if(check.equalsIgnoreCase("ABC")){
Toast.makeText(Level1.this, "correct" ,Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(Level1.this, "NO" ,Toast.LENGTH_SHORT).show();
}
}

我想在 onClick 方法中调用它,如 onClick() 方法所示,即:

`public void onClick(View v) {
Level1 ob = new Level1();
ob.checkAns();....

Level1 是我的类(class)名称。我的问题是,当我从 onClick() 调用方法 checkAns() 并单击任何按钮时,我的应用程序停止了当我在 onClick() 中使用相同的 checkAns() 代码并删除 checkAns() 的调用语句时,应用程序可以正常工作美好的。希望我的问题是可以理解的。请帮忙。

更新:我的一级类(class)。

    package com.example.letsguesssomething;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

public class Level1 extends Activity implements OnClickListener{


ImageButton A,B,C,D,E,F,G,H,I,J;
TextView ans;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level1);

A = (ImageButton) findViewById(R.id.A);
B = (ImageButton) findViewById(R.id.B);
C = (ImageButton) findViewById(R.id.C);
D = (ImageButton) findViewById(R.id.D);
E = (ImageButton) findViewById(R.id.E);
F = (ImageButton) findViewById(R.id.F);
G = (ImageButton) findViewById(R.id.G);
H = (ImageButton) findViewById(R.id.H);
I = (ImageButton) findViewById(R.id.I);
J = (ImageButton) findViewById(R.id.J);
ans = (TextView) findViewById(R.id.ans);
A.setOnClickListener(this);
B.setOnClickListener(this);
C.setOnClickListener(this);
D.setOnClickListener(this);
E.setOnClickListener(this);
F.setOnClickListener(this);
G.setOnClickListener(this);
H.setOnClickListener(this);
I.setOnClickListener(this);
J.setOnClickListener(this);

}



@Override
public void onClick(View v) {
//Level1 ob = new Level1();
//ob.checkAns();
int id = v.getId();
String typed = ans.getText().toString();

String resourceName = getResources().getResourceEntryName(id);
ans.setText(typed + resourceName);


String check =ans.getText().toString();

if(check.equalsIgnoreCase("ABC")){
Toast.makeText(Level1.this, "correct" ,Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(Level1.this, "NO" ,Toast.LENGTH_SHORT).show();
}
}



}
public void checkAns() {
String check =ans.getText().toString();

if(check.equalsIgnoreCase("ABC")){
Toast.makeText(Level1.this, "correct" ,Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(Level1.this, "NO" ,Toast.LENGTH_SHORT).show();
}
}

}

最佳答案

要获得正确答案,您必须提供问题的堆栈跟踪。ans.getText() 中使用的 ans 变量可能有问题。您是否检查过它是否分配了非空值?

顺便问一下,你的 Level1 类是 Activity 类的扩展吗?因为您使用 Level1.this 作为为 Toast 提供的上下文。在这种情况下,问题可能出在初始化 Level1 对象的方式上。使用构造函数实例化 Activity 的情况并不常见。

编辑:

重点是,您永远不应该像在 Leve1 ob = new Level1() 中那样在 Activity 类中创建 Activity 对象。您可以替换

Level1 ob = new Level1();
ob.checkAns();

checkAns();

并将 checkAns 函数移动到您的 Activity 类中,而不是移出它。由于 checkAns() 是 Level1 类的方法,因此您可以在非静态类函数中的任何位置调用它,其中当然包括 onClick 方法。

下面的代码应该可以正常工作。

public class Level1 extends Activity implements OnClickListener{

ImageButton A,B,C,D,E,F,G,H,I,J;
TextView ans;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level1);

A = (ImageButton) findViewById(R.id.A);
B = (ImageButton) findViewById(R.id.B);
C = (ImageButton) findViewById(R.id.C);
D = (ImageButton) findViewById(R.id.D);
E = (ImageButton) findViewById(R.id.E);
F = (ImageButton) findViewById(R.id.F);
G = (ImageButton) findViewById(R.id.G);
H = (ImageButton) findViewById(R.id.H);
I = (ImageButton) findViewById(R.id.I);
J = (ImageButton) findViewById(R.id.J);
ans = (TextView) findViewById(R.id.ans);
A.setOnClickListener(this);
B.setOnClickListener(this);
C.setOnClickListener(this);
D.setOnClickListener(this);
E.setOnClickListener(this);
F.setOnClickListener(this);
G.setOnClickListener(this);
H.setOnClickListener(this);
I.setOnClickListener(this);
J.setOnClickListener(this);

}



@Override
public void onClick(View v) {
int id = v.getId();
String typed = ans.getText().toString();

String resourceName = getResources().getResourceEntryName(id);
ans.setText(typed + resourceName);

checkAns();

}



public void checkAns() {
String check =ans.getText().toString();
if(check.equalsIgnoreCase("ABC")){
Toast.makeText(Level1.this, "correct" ,Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(Level1.this, "NO" ,Toast.LENGTH_SHORT).show();
}
}
}

关于java - 安卓 : calling a user defined method causing application misbehave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com