您好我想弄清楚以下代码的工作原理及其含义:
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关键字的情况下创建对象。
答案 0 :(得分:0)
您可以通过在任何扩展上下文对象的类上调用getApplicationContext()
来获取上下文。
顾名思义,它是应用程序/对象当前状态的上下文。
例如:Activity
,IntentService
,BroadcastReceiver
等。
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
个实例。