0

私はプログラミングが初めてで、プログラムで追加する方法を正しく理解しているかどうかわかりません 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に a を追加する方法がわからないというエラーが表示されます。たぶん、これを追加する方法についてすべて間違っています。TextViewthis

だから私の質問は、これを機能させるために何を入れるのcontextですか? プログラミング初心者なので丁寧に教えてください。

4

2 に答える 2

3
this

クラスの現在のオブジェクトを参照します。通常、Activity クラスでプログラムによって View を作成するときに、多くの人がこれを使用するのを目にします。

TextView tv = new TextView(this);

this は Activity.this を参照し、ほとんどの View には Context が必要です。また、Activity は Context から拡張されるため、Activity を Context として渡すだけで済みます。

あなたの解決策:
現在、これがどのクラスにあるかを示していません。これが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 に答える