如何将活动中的数据发送到课程?
我尝试使用getter传递一个String但是这给了我变量的初始值,但是我的onCreate中我的String值发生了变化。任何想法我怎么能把它传递给我的班级?
以下是一些代码:
public class MainActivity extends AppCompatActivity {
private String global ;
public String getGlobal() {
return global;
}
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
global = String.valueOf(parent.getItemAtPosition(position));
}
});
}
这是我的班级
public class SimpleVar {
MainActivity mainActivity = new MainActivity() ;
String data = mainActivity.getGlobal; }
任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:2)
global
实际上不是“全球”
Activity的每个实例都有自己的字符串,操作系统可以随时决定终止你的Activity并重新创建它,因此不要依赖另一个类中的Activity变量。
其次,永远不要进行new
活动。这不再与您最终点击按钮的活动相关联。
很难确定你真正需要什么,但这更为正确。
public class SimpleVar {
String data;
}
随着活动向其发送数据
private SimpleVar var;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
var = new SimpleVar();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
var.data = String.valueOf(parent.getItemAtPosition(position));
}
});
}
如果您需要在其他地方使用该对象,则需要将其传递给此活动
中的那些类答案 1 :(得分:1)
尝试为你的类制作构造函数
public class SimpleVar {
private String data;
public SimpleVar(String data) {
this.data = data;
}
public void setData(String data) {
this.data = data;
}
}
然后在您的活动中新建该类,然后将数据设置为
答案 2 :(得分:0)
您不应该在班级中创建新的主要活动。 在实例化类时,将类传递给它,创建类的Activity的引用。对活动的引用应保留在弱引用中。然后你可以在Activity中创建一个getter并从你的类中调用它。
或者你可以做相反的事情 - 保持对Activity中实例化对象的引用。使用活动中的setter将新值传递给对象。