我有两个课程。 A类是一个Activity,它包含需要在B类(而不是Activity)中使用的整数变量。我以前能够使用Bundles将变量数据从一个Activity转移到另一个Activity。问题是,这次,B类不是Activity并扩展了ImageView,因此可以使用draw()函数。因此,我无法使用普通的Activity函数(例如Bundle-Intents或SharedPreferences)将原始变量中的数据从A类传输到我的B类。我收到一条错误,指出“getIntent()未定义类型”。
所以我的问题是,如果我无法捆绑,B类如何使用A类中的变量?还有另一种方式吗?
有人说他们不理解我的问题所以希望下面的例子有助于更好地证明。
public Class1 extends Activity {
//so Class1 has some primitive data, and is an Activity w/layout
int var1;
int var2;
Bitmap bitmap;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
}
}
另一个类需要绘制到画布上,但也需要使用 var1和var2中的信息能够正确绘制。但是如何获得这些信息?
public Class2 extends ImageView {
/*I am unable to use normal Activity functions, so I
*cannot onCreate, for example. I also cannot bundle,
*getIntent(), or use getSharedPreferences(). So how do I get var1
*and var2 value? */
}
更新:我能够使用getter来解决这个问题。我之前尝试过这个,但它没有返回正确的值。如果其他人遇到这个类似的问题,请记住使用“静态”设置变量。我仍在学习所有的差异,但没有静电,我的吸气剂不起作用。一旦我将静态添加到变量中,一切都会成功。所以这是一个观察性的提示(即使没有完全理解为什么的逻辑)。感谢所有响应者提供的提示。
答案 0 :(得分:2)
你可以用不同的方式做到这一点
首先,您可以使用静态变量来执行此操作。这样你就可以在A类public static String variable;
中声明一个变量,从B类中你可以像这样ClassA.variable
获得这个变量的值。
您可以通过将类A的上下文传递给B然后使用SharedPreference
来使用的另一种方法。
或者创建一个扩展android Application的新类。从A类中,您可以在应用程序类中设置不同的变量值。
现在您可以从Application类中检索这些值。希望这可以帮到你。
一些代码示例使用静态变量
public Class1 extends Activity {
public static int var1 =20;
public static int var2 = 30;
}
现在从第二类获取变量值
public Class2 extends ImageView {
Class1.var1;
Class.var2;
}
使用getter的第二种方式。
public Class1 extends Activity{
int var1 =10;
int var2 =20;
public int getVar1() {
return var1;
}
public int getVar2() {
return var2;
}
}
现在您可以在Class2中获取变量值
public Class2 extends ImageView {
Class1 class1= new Class1();
class1.getVar1;
class1.getVar2;
}
您也可以使用SharedPreference
。希望它可以帮到你。谢谢。
答案 1 :(得分:1)
存在各种选择:
Activity
可以将信息传递给Class B
:
class B {
public void tellMeInformat(int usefulNumber) {
// Do something
}
}
或者,您可以将Activity传递给ImageView:
class A {
initiation {
B mySpecialImageView = /* Set it upo */;
B.setParentActivity(this);
}
}
class B {
private myA = null;
public void setParentActiviy {
myA = A;
}
private void doSomething {
int usefulNumber = A.getUsefulNumbner();
// Do something
}
}