2015-01-02 31 views
0

你好我试图找出如何在下面工作的代码及其含义:this关键字在下面的Android程序上下文

public Context mContext; 
    private Common mApp; 
    public Activity mActivity; 

    mContext = this; 
    mActivity = this; 
    mApp = (Common) mContext.getApplicationContext() 

对我来说,调用一个方法,我需要创建一个类的对象如下

Context mContext = new Context(); 

and then i would be able to invoke the method getAppliationContext as shown above: 

mContext.getApplicationContext() 

有人可以解释的是,我请了,还怎么是这个关键字的应用above.From我知道什么是这个关键字是对对象本身的引用。 此外,我不明白怎么“MAPP”被用来作为一个对象来调用下面的各种方法:

 int startCount = mApp.getSharedPreferences().getInt("START_COUNT", 1); 
    mApp.getSharedPreferences().edit().putInt("START_COUNT", startCount+1).commit(); 

但它没有被使用new关键字创建的,我想,我需要要执行以下操作以调用使用mApp的方法:

Common mApp = new Common();

,这样我就能够做到这一点

int startCount = mApp.getSharedPreferences().getInt("START_COUNT", 1); 
    mApp.getSharedPreferences().edit().putInt("START_COUNT", startCount+1).commit(); 

我觉得我在哪里,在标题是,有没有其他的办法,而不只是使用new关键字来创建一个对象。

回答

0

您可以通过在任何扩展上下文对象的类上调用getApplicationContext()来获取上下文。顾名思义,它是应用程序/对象当前状态的上下文。

例如:ActivityIntentServiceBroadcastReceiver

Context context=getApplicationContext(); 

获取上下文对象后,就可以调用任何类内部上下文类的方法。

如:

context.startActivity(); 
context.getSharedPrefereces(); 
context.getSystemService(LAYOUT_INFLATER_SERVICE);  
context.getContentResolver().query(uri, ...); 
+0

谢谢,这是否意味着getApplicationContext()方法返回一个Context类型的对象?并且我们将这个对象分配给refernce上下文? – kobewarui

+0

@kobewarui是的,它返回一个类型的对象上下文 – Darish

0

你说得对这个this关键字。

Activity类扩展了Context类。 this关键字因此可用于Activity类中,以引用Activity对象和Context对象,因为Activity类型的对象只是Context的扩展版本,因此它的所有方法和变量都被继承。在这里看到:http://developer.android.com/reference/android/app/Activity.html

我从来没有见过Common Android的API中,但它从Context对象铸造,因此我将把它作为如果它是一个Context对象。您无需实例化Context对象以调用其方法的原因是因为在此示例中,您已将Context实例分配给mApp

+0

感谢您的洞察力 – kobewarui

+0

感谢您的洞察力,这是否意味着引用mContext和mActivity通过使用this关键字分配给一个对象:mContext = this; mActivity = this; – kobewarui

+0

没错。 'mContext'和'mActivity'将被赋予它们写入的类的对象实例。 – Kavan