在一个班级设置并从另一个班级获得

时间:2013-05-18 04:56:24

标签: java android

我知道这是非常基本的,但我只是看不出问题是什么...我想要做的就是将变量的值从一个类设置为“中间”类并在一个类中检索它第三类(因为filterArray也会从其他类调用,我希望它们都能读取相同的数据)。但如果我这样做:

b =new GetSet()
b.setBdl(extras);
JSONArray arr= getData.filterArray();  
使用

class GetSet {
  private Bundle params;

  public GetSet() {
    }

  public Bundle getBdl() {
    return this.params;
  }

  public void setBdl(Bundle bdl) {

    params = bdl;
  }
}

然后在filterArray方法中,如果我尝试

       Bundle params = new GetSet().getBdl();

我遇到各种运行时错误,如果我尝试

Bundle params = GetSet.getBdl();

它告诉我我不能对非静态方法进行静态引用。 我哪里错了?

2 个答案:

答案 0 :(得分:0)

您应该将b传递给filterArray方法。 首先更改filterArray以获取GetSet类型的一个参数:

public JSONArray filterArray(GetSet b)

然后,将其称为:

getData.filterArray(b); 

filterArray内,只需使用:

Bundle params = b.getBdl();

问题是你创建了一个对象并设置了一个值,然后你需要从相同的对象中获取值。

使用对象时,可以创建所需类的新对象,设置其内部值,当您从不同位置访问同一对象时,内部值将相同(我在{{{ 1}}和GetSet

另一个选择是使用静态值(和静态getter和setter),如果该类的所有对象的值相同。这通常不需要,并且可能由于设计不良而被使用。在你的情况下,你真的不需要它,但它会起作用。

答案 1 :(得分:0)

错误是因为您以错误的方式使用它

查看你的getBdl签名,它是一个公共Bundle方法,它是一个非静态方法,因此不能被类名访问。

应该通过bean对象b,

访问它

第二个错误也有关系,

你用对象b编写/设置bean的属性但是当你访问它时,你又在创建一个新的GetSet()。getBdl,所以它说Null pointer exception

所以这样做

GetSet b = new GetSet(); b.setBdl(bundle object);

所以现在b包含值 通过b ...

所以通过b获取bundle,如果你需要从另一个类中访问它,将b传递给它的构造函数并获取它们的

SomeClass class = new SomeClass(b); 现在在那个班级你可以通过b

获得捆绑 希望这一切对你有帮助。