当前位置:编程学习 > wap >>

怎么访问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数据); --------------------编程问答--------------------
引用 2 楼 jerrygj 的回复:
我是想调用这个activity里的非静态方法


也可以通过构造函数将上下文传递过去!

即 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();
  }
} --------------------编程问答-------------------- 多个地方要用到的,还是单独写个类实现~ --------------------编程问答--------------------
引用 6 楼 jeky198306 的回复:
多个地方要用到的,还是单独写个类实现~

写到一个工具类里面
或者写到一个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;
}
--------------------编程问答-------------------- 感谢这么多人回答,你得方法应该不错,我试一下

引用 4 楼 lizhengjun2010 的回复:
引用 2 楼 jerrygj 的回复:
我是想调用这个activity里的非静态方法


也可以通过构造函数将上下文传递过去!

即 ab c=new ab(xxxActivity.this)
在ab类中,
通过这个上下文调用acitivity里面的方法
--------------------编程问答-------------------- 你好 把 ItemizedOverlay 类 写入到 Activity的内部 就可以了!
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,