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是 class 的私人编号SmsActivity

第 3 行应该是我不确定的构造函数,因为我不是 android 开发人员,我听说它onCreateActivity. 但无论如何,这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.someMumberor 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 变量中。

因此,当您在 Activity 中调用“this”时,它会为您提供该 Activity 的实例。

于 2012-08-07T03:42:59.973 回答