怎么访问activity类里的非静态变量或方法
1、在另一个activity里,可以使用intent;2、在一个普通的class里,怎么访问activity类里的非静态变量或方法。我是这样做的
例如:
newActivity= new BaseActivity();//BaseActivity继承自activity的类
scrennWidth=newActivity.getScreenWidth();
这样做出错了,怎么回事啊,有没有好的方法啊,我不想把getScreenWidth()设为静态方法
谢谢 --------------------编程问答-------------------- 那就设一个全局静态变量来保存这个值。。。我就想到这个办法。。 --------------------编程问答-------------------- 我是想调用这个activity里的非静态方法 --------------------编程问答-------------------- 通过构造函数将activity中的数据传递过去!!
普通ab.class
public class ab
{
String str;
ab(String str)
{
this.str=str;
}
activity中通过构造ab类对象传递数据过去
ab c=new ab(string数据); --------------------编程问答--------------------
也可以通过构造函数将上下文传递过去!
即 ab c=new ab(xxxActivity.this)
在ab类中,
通过这个上下文调用acitivity里面的方法 --------------------编程问答-------------------- public class TestActivity extends Activity{
private A a;
@Override
public void onCreate(Bundle savedInstanceState) {
a = new A(this);
}
public void method(){
System.out.println("可以调用我");
}
}
public class A{
private TestActivity mActivity;
public A(TestActivity context){
mActivity = context;
xx();
}
private void xx(){
mActivity.method();
}
} --------------------编程问答-------------------- 多个地方要用到的,还是单独写个类实现~ --------------------编程问答--------------------
写到一个工具类里面
或者写到一个Application子类里面 --------------------编程问答-------------------- 7楼回答很对,
跨activity传递数据,还是写一个application的子类,专门负责保存需要共享的状态,然后通过不同的activity来调用,调用的时候在activity里只需这样:
SonOfApplication mSon = ((SonOfApplication)getApplicationContext());
mSon.getter();
这样的话传啥对象都ok。
--------------------编程问答-------------------- 可以了吗 --------------------编程问答-------------------- 楼主的困惑是如何获取activity对象中的数据吧,因为Activity的构建依赖于系统框架,我们通过
startActivit方法交系统去创建了一个Activity,而不是原来我们新建一个Activity的方式去创建一个Activity了,因此我们没有办法直接获取一个Activity的引用了。 --------------------编程问答-------------------- 一个简单有效的办法就是使用单例模式,在Activity中提供一个静态方法获取这个Activity,然后你可以通过class获取这个activity对象:
--------------------编程问答-------------------- 感谢这么多人回答,你得方法应该不错,我试一下
public class MainActivity extends Activity {
private static MainActivity defaultActivity = null;
public static MainActivity getDefault() {
return defaultActivity;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
defaultActivity = this;
}
@Override
protected void onDestroy() {
defaultActivity = null;
}
--------------------编程问答-------------------- 你好 把 ItemizedOverlay 类 写入到 Activity的内部 就可以了!
补充:移动开发 , Android