我是编程新手,不确定我是否正确理解如何以编程方式添加TextView。我发现有很多人这样做,但是他们在上下文中使用this。我通常理解这一点,但是就我而言,这是行不通的。

我正在通过parse.com检索Objects,并尝试在String中设置.findInBackground()。这是我的代码:

private void Retrieve2() {

        final ParseObject Fighters = new ParseObject("FightersDB");
        ParseQuery query = new ParseQuery("FightersDB");
        query.whereEqualTo("Name", "The First Guy");
        query.findInBackground(new FindCallback(){
            @Override
            public void done(List<ParseObject> objects, ParseException e) {

                  if (e == null) {
                        Log.d("Status", "Retrieved suuccessfully");
                        String name, record, age;
                     name = Fighters.getString("Name");
                     age = Fighters.getString("Age");
                     record = Fighters.getString("Record");
                     set(name, record, age);

                    } else {
                        Log.d("Status", "Error: " + e.getMessage());
                    }

            }

            private void set(String name, String record, String age) {

                RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl);

                TextView tv = new TextView(this); //<---- RIGHT HERE IS MY PROBLEM
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)LayoutParams.WRAP_CONTENT, (int)LayoutParams.WRAP_CONTENT);
                params.leftMargin=0;
                params.topMargin=80;
                tv.setPadding(10, 0, 0, 0);
                tv.setText("" + name + "" + record + "" + age);
                tv.setTextSize((float) 20);
                tv.setLayoutParams(params);
                rl.addView(tv);

            }
        });


我在代码中指出的地方,出现一个错误,指出The constructor TextView(new FindCallback(){}) is undefined我不知道如何在上下文中不使用TextView来添加this。也许我在添加它方面全都错了。

所以我的问题是我要放入context来完成这项工作吗?我是编程新手,所以请您彻底解释。

最佳答案

this


引用该类的当前对象。通常,您会看到许多人在Activity类中以编程方式创建View时使用此方法:

TextView tv = new TextView(this);


这指的是Activity.this,大多数View需要Context。而且Activity是从Context扩展的,因此您可以将Activity作为Context传入。

您的解决方案:
当前您没有显示它在哪个类中,如果这是一个Activity类,请使用它,如果这是Activity类的innerClass,请使用ActivityClass.this,如果这不是一个Activity类,则必须获取方法(或构造函数/字段)的参数中的上下文;

更新因为您说的是Activity类的内部类,所以可以使用ActivityClass.this作为Context传递:

TextView(ActivityClass.this);

10-07 19:33
查看更多