为简洁起见,我简化了这一点;希望这个例子实际上不起作用。我正在使用变量创建和处理,然后我有另一个类做一些东西,然后该类返回原始并告诉它用该变量做更多的东西。
我用视图完成了这个。我只是传递了活动,然后当我需要使用它时,我使用activity.findViewById(id)
来做事。使用变量,您不能只执行activity.variable。我尝试使用一个getter(如本例所示),但也许我仍然只是做错了或者我不喜欢这样做:
public class MyActivity {
private int test;
public void onCreate(Bundle savedInstanceState) {
test = 5;
int data = 100;
//Pass something to it
new NotAnActivity().func(MyActivity.this,data);
}
public int gettest() {
return test;
}
public void func(Activity instance, int response) {
int test = new MyActivity().gettest();
//Do stuff with test
}
}
public class NotAnActivity {
public void func(Activity instance, int data) {
//Do stuff with data
int response = 20;
//Try to pass information back
new MyActivity().func(instance,response);
}
}
答案 0 :(得分:1)
您不能使用activity.gettest()
,因为您在类之间传递了超类Activity。要访问gettest()
方法,您需要传递特定的子活动(MyActivity
扩展Activity
,传递MyActivity
而不是Activity
),或者您可以投对你的具体活动。
((MyActivity)activity).getter();
所以在这里,而不是:
public void func(Activity instance, int data) {
//Do stuff with data
int test = ((MyActivity)instance).gettest();
}
或
public void func(MyActivity instance, int data) {
//Do stuff with data
int test = instance.gettest();
}
自己实例化您的活动不是一个好主意新A()
答案 1 :(得分:0)
public class MainActivity extends AppCompatActivity {
private int test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test = 5;
int data = 100;
new NotAnActivity().func(this,data);
}
public int gettest() {
return test;
}
public void func(MainActivity instance, int response) {
//int test = new MainActivity().gettest();
int test = instance.gettest();
Log.v("variable", "test = " + test);
}
}
class NotAnActivity {
public void func(MainActivity instance, int data) {
//Do stuff with data
int response = 20;
//Try to pass information back
instance.func(instance,response);
}
}
你可以尝试一下。你的错误是 [new MyActivity()]