0

私はここに来たばかりなので、ここでいくつかの特定のことについてまだ非常にぼやけています。
&私は次のコードと少し混乱しています。

public class SmsActivity extends ListActivity { 
private String[] mSmsReceiver; 
public SmsActivity(){
mSmsReceiver = new SmsReceived();

setListAdapter(new ArrayAdapter<String>(this, R.layout.main,mSmsReceiver));

私の理解:(間違っているはずです)

1 行目: スーパークラスSmsActivityの下のクラスListActivity
2 行目: 文字列配列の用語名を導入します: mSmReceiver
3 行目: メソッドの呼び出しSmsActivity()
4 行目:SmsActivityメソッド内で、mSmsReceiver(文字列配列) メソッド SmsReceived を呼び出します
5 行目: ArrayAdapter(文字列形式で、情報をロードします。 mSmsReceiver の) にロードされますsetListAdapter

私の質問:

  1. 上記のコードで私の理解を修正してください。
  2. 5 行目、何をthis指していますか?
    (私はインターネットと本でチェックしましたが、常にコンテキストと言っています。しかし、コンテキストが正確に何を意味するのかまったくわかりません。ここで参照しているコンテキストとは何かを誰かが説明できますか?)

完全なコード:

    import...
    ....   

    public class SmsActivity extends ListActivity {
    private String[] mSmsReceiver;
    public SmsActivity(){
    mSmsReceiver = new SmsReceived();

    setListAdapter(new ArrayAdapter<String>(this, R.layout.main,mSmsReceiver));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    //---method is call when listitem is clicked---
    listView.setOnItemClickListener(new OnItemClickListener() {edit later});
    }


    private class SmsReceived extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) 
    {..... }
    }

    }
4

2 に答える 2

2

基本的に、これは。という名前のクラスの定義ですSmsActivity

あなたは1行目と2行目について正しいです。より正確にmSmReceiverは、クラスのプライベート番号ですSmsActivity

onCreate3行目は、Android開発者ではなく、代わりにで使用されていると聞いたため、わからないコンストラクターである必要がありますActivity。しかしとにかく、それはcalling the methodそれの単なる定義ではありません。コンストラクターは、クラスを初期化するために使用されます。

そして4行目mSmsReceiver(a string array) call method SmsReceived。そうではなく、そうなるでしょうinitialize mSmsReceiver with an object, which is an instance of class SmsReceived

5行目thisはクラスを参照していSmsActivityます。クラスthisでは、ほとんどの場合、そのクラスを参照します。これにより、this.someMumberまたはを使用できるようにコンテキストが提供されますthis.someFunction

于 2012-08-07T03:43:55.777 に答える
1

Javaのキーワード「this」は基本的にそのクラスへの参照です。例:

public class MyClass {
    MyClass myVar = this;
}

これにより、クラスMyClassのインスタンスがその変数に配置されます。それはあなたのクラスのインスタンスをあなたに与えます。あなたがそれをメソッドで呼び出すなら:

public void myMethod() {
    MyClass m = this;
}

これにより、myMethodを呼び出したクラスのインスタンスが提供されます。MyClassのインスタンスまたはMyClassのサブクラスのインスタンスをウェザーします。メソッドの呼び出しに使用されるインスタンスはすべて、m変数に配置されます。

したがって、アクティビティで「this」を呼び出すと、そのアクティビティのインスタンスが提供されます。

于 2012-08-07T03:42:59.973 に答える