我正在尝试在解析查询外部访问一个字符串,它在查询外部不起作用,但在查询内部有效。
我声明了全局变量并尝试访问它,但是它仍然不起作用,它不是字符串而是返回null。

我是Java和Android的新手,所以如果这是个愚蠢的问题,请原谅我。

任何帮助,将不胜感激。

public class ActivityQuiz extends AppCompatActivity {

ArrayList<String> answerList = new ArrayList<>();

int c=0;

String Answer = "correct";
String selectedOption;
public static String  checkAns;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);


    ParseQuery<ParseObject> query = ParseQuery.getQuery("Question");
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> questions, ParseException e) {
            if (e == null) {
                for (ParseObject question : questions) {
                    answerList.add(question.getString(Answer));
                     checkAns = getanswerList.get(c);
                     Log.d("String check",""+checkAns); //here it's working
                }

            } else {
                e.printStackTrace();
            }
        }

    });

    try{

    String checkanswer = checkAns ; // here returns null instead of string
    Log.d("String checkans",""+checkanswer);}
    catch (Exception e)
    {
        e.printStackTrace();
        Log.d("Error", "Error, Not Working");
    }
    }

最佳答案

有一个非常简单的问题。首先,您在点击API后(在后台)从数据中获取了checkAns的值。因此,如果数据来自API,则它将为非null。

在后面的部分中,由于API响应需要时间,因此try-catch块将在它设置checkAns中的值之前执行,因此checkAns等于初始化值null

理想情况下,应仅在checkAns方法中使用done()的值。

09-08 12:13