2017-05-03 10 views
-1
Relativelayout lyt = new Relativelayout(this) 

ここでは「これは何ですか? は、Javaの 'this'キーワードです。もしあれば、裏で起こっていることです。 ここでは、この「ここ」のキーワードをどのように使用したいのですかこちらはここが「これ」なのですか?relativelayout lyt = new relativelayout(this)

+1

ヒント:あなたはまだjava/androidを学び始めています。心に留めておいてください:あなたの前に何人もの人々がいました。彼らはおそらくあなたが今持っているものと同じ質問をしていたでしょう。だから、してください:いくつかの研究*新しい*質問をする前に行う。チャンスは、あなたがこの時点で尋ねることを夢見ることができるすべてが尋ねられています。ここに。他の場所。無数の時間。そして答えました。 – GhostCat

答えて

1

Javaでは、thisは現在のオブジェクト、つまり現在作業しているオブジェクトを意味します。

あなたは(限りRelativelayoutthisの種類は何でも受け入れるコンストラクタを持っているとして、当然の)Relativelayoutのオブジェクトを作成しながら、Relativelayout lyt=new Relativelayout(this)は基本的に、あなたの現在のオブジェクトを渡していると言います。

静的コンテキストでは、thisは使用できません。

以下のサンプルコードを参考にして説明してください。理解しやすいので、非常に簡単です。キーワードについてのご質問には

public class Class1 { 
    public static void main(String[] args) { 
     new Class1().test(); // see here I couldn't do "Class2 class2 = new Class2(this);" because "this" cannot be used in "static" context, so I had to create an object of Class1 
    } 

    private void test() { 
     Class2 class2 = new Class2(this); // here this means current object of "Class1" 
    } 
} 

public class Class2 { 
    private Class1 class1; 

    Class2(Class1 _class1){ 
     this.class1 = _class1; // here "this" means the object of Class2. 
    } 
} 

そして最後に、はい「これは」Javaでのキーワードであるあなたがdocumentation上で見ることができるように、完全なリストについては(§3.9)

0

をJLSの仕様を参照し、「これは」文脈であります。私はこのコード行がアクティビティを拡張するクラスにあると考えていますので、 'これ'は新しいレイアウトを挿入するアクティビティを表します。

0

が必要です。コンテキストアクティビティでビューを動的に作成する場合です。

たとえば、コードから** RelativeLayout **を動的に作成することができます。これを行うには、** RelativeLayout **クラスをインスタンス化します。 RelativeLayoutクラスのコンストラクタはコンテキストオブジェクトをとり、アクティビティクラスはコンテキストのサブクラスであるため、thisキーワードを使用してContextオブジェクトを表すことができます。

関連する問題