如何将数据从活动传递到类?

时间:2017-06-11 12:50:28

标签: java android class oop android-activity

如何将活动中的数据发送到课程?

我尝试使用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; }

任何帮助将不胜感激。提前谢谢!

3 个答案:

答案 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将新值传递给对象。