【问题标题】:Concept of introduce class, object?引入类、对象的概念?
【发布时间】:2012-08-07 03:13:51
【问题描述】:

我是新来的,所以这里的某些东西仍然很模糊。
& 我对下面的代码有点困惑。

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) 
    {..... }
    }

    }

【问题讨论】:

    标签: android arrays string class listadapter


    【解决方案1】:

    基本上这是一个名为SmsActivity 的类的定义。

    关于第 1 行和第 2 行,您是对的。更准确地说,mSmReceiverSmsActivity 类的私有编号。

    第 3 行应该是我不确定的构造函数,因为我不是 android 开发人员,我听说它使用 onCreate 而不是 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.someMumberthis.someFunction

    【讨论】:

      【解决方案2】:

      Java 中的关键字“this”基本上是对其所在类的引用。例如:

      public class MyClass {
          MyClass myVar = this;
      }
      

      这会将 MyClass 类的实例放入该变量中。它为您提供了您所在的任何类的实例。如果您在方法中调用它:

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

      这将为您提供调用 myMethod 的任何类的实例。天气它是 MyClass 的实例或 MyClass 的子类的实例。用于调用该方法的任何实例都将放在 m 变量中。

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

      【讨论】:

      • 谢谢。 @JasonCrosby,这里有个小问题。如果在MyClass 中我只有很少的实例(A、B、C、D),那么在上面的 2 个代码中,将加载哪个实例?它是随机加载的吗? & 每次加载不同的实例?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2017-06-11
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多