我是编程新手,我不确定如何正确理解如何以编程方式添加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
中放入了什么来使这项工作?我是编程新手,所以请仔细解释。
答案 0 :(得分:3)
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);
答案 1 :(得分:2)
尝试使用ActivityClass.this
,例如
TextView tv = new TextView(ActivityClass.this);