以编程方式创建布局 - 两个基本问题

时间:2014-05-10 16:50:39

标签: java android this nested-class layoutparams

我在以下代码段中提出了几个问题:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // creating LinearLayout
        LinearLayout linLayout = new LinearLayout(this); //****QUESTION 2*********
        // specifying vertical orientation
        linLayout.setOrientation(LinearLayout.VERTICAL);
        // creating LayoutParams  
        LayoutParams linLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); //*****QUESTION 1***
        // set LinearLayout as a root element of the screen 
        setContentView(linLayout, linLayoutParam);
    }
  1. 基类是ViewGroup.LayoutParams,即LayoutParams是一个 ViewGroup的嵌套类。我还读到它是静态的 嵌套类。所以为什么我们不使用外部类来引用它? 名称和点符号:

    ViewGroup.LayoutParams linLayoutParam = new ViewGroup.Layout(...);
    
  2. 在以下语句中,哪个对象是“this”?在Java中 在编程语言中,方法中的 this关键字引用current对象,即此方法所属的对象。但我们没有显式调用(使用对象){{1 {} 1}。

    onCreate()

1 个答案:

答案 0 :(得分:1)

  

...为什么我们不使用外部类名称和点符号

来引用它

您似乎没有意识到Java语言中的static imports。大多数情况下,我喜欢你的建议方式,即使用外部类名称和ViewGroup.LayoutParams之类的点来引用内部类,而不是使用静态导入。但是,在某些情况下,如果你可能不得不这样做太多次,那么最好是进行静态导入而不是重复类名。在使用像JUnit这样的单元测试框架时,你会看到很多这种情况,它带有很多静态方法的类。

  

...在下面的语句中,什么对象是“this”?

在您的方法中,通过使用关键字 - this,您指的是您已声明/定义实例方法的类的当前实例(即方法@Override public void onCreate(Bundle savedInstanceState))。