这个关键字在android编程下面的上下文中

时间:2015-01-02 07:38:13

标签: android android-activity android-context

您好我想弄清楚以下代码的工作原理及其含义:

    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()

有人可以帮我解释一下,以及这个关键字如何应用于上面。据我所知,this关键字是对象本身的引用。 我也不明白" 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关键字的情况下创建对象。

2 个答案:

答案 0 :(得分:0)

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

例如:ActivityIntentServiceBroadcastReceiver等。

Context context=getApplicationContext();

获取上下文对象后,可以在任何类中调用上下文类方法。

例如:

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

答案 1 :(得分:0)

您对此this关键字完全正确。

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

我从未见过Android API中的Common,但它是从Context对象中投放的,因此我将其视为Context对象。您不必实例化Context对象来调用其方法的原因是因为您已在此示例中为Context分配了mApp个实例。

相关问题