0

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

我正在Objects通过 parse.com 检索 's,并尝试将String's设置为.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上下文的情况下添加 a。也许我在如何添加这个方面都错了。

所以我的问题是我应该投入什么context来完成这项工作?我是编程新手,所以请详细解释一下。

4

2 回答 2

3
this

指类的当前对象。通常你会看到很多人在 Activity 类中以编程方式创建 View 时使用它:

TextView tv = new TextView(this);

this 指的是 Activity.this ,大多数 View 都需要 Context。并且 Activity 是从 Context 扩展而来的,所以你可以将 Activity 作为 Context 传入。

你的解决方案:
目前你没有显示这是什么类,如果这是一个Activity类,就用这个,如果这是一个Activity类的innerClass,使用ActivityClass.this,如果这不是一个Activity类,你有在方法(或构造函数/字段)的参数中获取上下文;

更新既然你说它是 Activity 类的内部类,你可以使用 ActivityClass.this 作为 Context 传递:

TextView(ActivityClass.this);
于 2013-02-13T02:13:38.953 回答
2

尝试使用ActivityClass.this,例如

TextView tv = new TextView(ActivityClass.this);
于 2013-02-13T02:10:08.873 回答