在Activity的扩展类中如何获得Context??
public class aa extends Activity如何在aa中取得Context类对象
菜鸟一个,希望大家指点。。。 --------------------编程问答-------------------- 和Activty中一样用就行了,Context是Activity 的基类
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
--------------------编程问答-------------------- 那在这个aa类中怎么初始化一个Context,太菜不好意思。。。 --------------------编程问答-------------------- this不就是个Context? --------------------编程问答--------------------
正解 --------------------编程问答-------------------- 呵呵,正确。。。。 --------------------编程问答-------------------- #24
Context mCtx;
mCtx = aa.this; --------------------编程问答-------------------- 我见好多地方要传入context类型的参数,一直不知道做什么用,谁能帮解释一下哈 --------------------编程问答-------------------- 学习中,不过确实是使用this吧,好像。 --------------------编程问答-------------------- Activity类内部this指针啊 直接用就是了 --------------------编程问答-------------------- @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Context context=getBaseContext();
} --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 从context派生的类,直接调用this就可以了
Known Indirect Subclasses
AbstractInputMethodService , Activity , ActivityGroup , AliasActivity , Application , ContextThemeWrapper , ExpandableListActivity , InputMethodService , IntentService , IsolatedContext , LauncherActivity , ListActivity , MockApplication , MutableContextWrapper , PreferenceActivity , RenamingDelegatingContext , Service , TabActivity --------------------编程问答-------------------- 可以直接用This指针 --------------------编程问答-------------------- 另外我想问下的是
打比方情况如楼主声明的类aa继承Activity (public class aa extends Activity)
在有的方法中,需要传入Context类型的值,我直接使用this 是OK的。
但在另一些方法中,在需要传入Context类型的值时,直接使用this却不可以,会报出返回值类型不匹配这样的问题,而使用aa.this是OK的,谁能帮我解答下,非常感谢! --------------------编程问答--------------------
你是在内部类中调用的吧 , 比如按钮监听之类的 , 因为类对象改变了 , 所以不能用this ,但是可以调用外部类的aa.this --------------------编程问答--------------------
你是在内部类中使用的吧 , 比如说按钮的点击监听中 , 因为类对象改变了 , 所以不能用this , 但是可以调用外部类中的aa.this --------------------编程问答--------------------
恩恩,对象变了,这个时候this就不是context了。需要用aa.this指明 --------------------编程问答-------------------- Java的基础知识了,要搞清楚this这个所指的对象···· --------------------编程问答-------------------- 可是我想在外面的一个非Activity中用到本Activity的Context,咋办? --------------------编程问答-------------------- 在Activity中
B b = new B(this);
一个非Activity的类B
在类B中写个构造函数
public class B {
private Context mContext;
public B(XxxActivity context){
mContext = context;
}
}
--------------------编程问答-------------------- 楼上正解 --------------------编程问答-------------------- aa.this 可以直接写到你调用的方法里,因为aa现在本身就是一个context了,建议去看看继承和接口 --------------------编程问答-------------------- 若是在一个activity01调用另一个activity02的context 咋办? --------------------编程问答-------------------- 那就是activity02.this
或者是它的实例 --------------------编程问答--------------------
你的context没有初始化,不会报空指针异常? --------------------编程问答-------------------- +1
--------------------编程问答-------------------- 已经初始化了啊
在Activity中
B b = new B(this);
b.mContext.getResource();
...
一个非Activity的类B
在类B中写个构造函数
Java code
public class B {
private Context mContext;
public B(XxxActivity context){
mContext = context;
}
}
--------------------编程问答-------------------- getApplicationContext() --------------------编程问答-------------------- --------------------编程问答-------------------- 写一个类继承application,
class mApp extends Application {
private static Context instance;
//重写OnCreate()方法
onCreate() {
instance = this;
}
public static Context getInstance() {
return instance;
}
}
这样,在程序任何方法都能调用程序的Context对象了。。记得还要在manifast里把application的name属性改成你的这个类名~ --------------------编程问答-------------------- 可以再构造方法里面写一个。
补充:移动开发 , Android