新POJO对象的问题

时间:2015-01-25 01:55:19

标签: java android pojo

我刚刚创建了我的第一个POJO类,它接受两个字符串和一个字符串数组,并将它们组合成一个(缺少更好的术语)包。直到最后一部分,一切似乎都运转良好。这是我的代码:

class dataPOJO extends Phone_Save {
String fName;
String cName;
String[] cText;

public dataPOJO() {
    fName = file_name;
    cName = cname;
    cText = ctext;

}

public String getName() {
    return cName;
}

public void setName(String cName) {
    this.cName = cName;
}

public String getFileName() {
    return fName;
}

public void setFileName(String fName) {
    this.fName = fName;
}

public String[] getRemainder() {
    return cText;
}

public void getRemainder(String[] cText) {
    this.cText = cText;
}

public String toString() {
    String savePackage = "File Name: " + getFileName() + "\n";
    savePackage += "CName: " + getName() + "\n";
    savePackage += getRemainder() + "\n";
    return savePackage;
}

public static void main(String[] args) {


    dataPOJO combine = new dataPOJO();
    combine.setName(cName);
    combine.setFileName(fName);
    combine.setRemainder(cText);
    System.out.println(combine);
}
}

不幸的是,我不能将name设置为上面引用的任何字符串。对我来说,似乎我应该能够。我不能在那里放一个默认名称,如:

combine.setName("default name");

因为名称来自用户输入,并且每次都不同。我的问题是如何将下面的String数组的值设置为上面引用的cName之类的字符串? 谢谢! 添加了代码

公共类Phone_Save扩展了ActionBarActivity {

String[] ctext;
public int doc_id = 0;
String cname;
Button fileName;
Button loadText;
String file_name;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_phone_save);
    Intent save_intent = getIntent();
    Bundle bundle = save_intent.getExtras();
    EditText file_name_edit = (EditText) findViewById(R.id.editText);
    final TextView loaded_text = (TextView)findViewById(R.id.loaded_text);
    file_name = file_name_edit.getText().toString();
    fileName = (Button) findViewById(R.id.fName);
    loadText = (Button) findViewById(R.id.loadText);


    if (bundle != null) {
        ctext = bundle.getStringArray("confirmed_text");
        cname = bundle.getString("confirmed_name");


    }

    fileName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new dataPOJO();



        }
    });

}

1 个答案:

答案 0 :(得分:1)

首先,dataPOJO不应该延伸Phone_Save。没有dataPOJO需要做的事情取决于它是Activity(至少基于您向我们展示的内容)。如果你想让那个班级把这些信息存放在一个地方,那很好;否则只需将它们存储在Phone_Save中。现在你似乎试图同时做两件事,这令人困惑。

其次,在OnClickListener中调用new dataPOJO()会分配一个对象,然后丢弃它,因为它没有被分配给任何东西。它也是一个完全不同的对象,对此没有任何影响。

第三,在Android上没有使用main方法,它永远不会被调用(除非你自己调用它,无论如何都是毫无意义的。)

我会使dataPOJO成为自己的类,它不会扩展任何东西并摆脱no-arg构造函数(或者保留它但删除其中的代码)。在Phone_Save onCreate方法中,您只需创建一个dataPOJO并挂起即可。

public class DataPojo {
    String fName;
    String cName;
    String[] cText;

    public dataPOJO() {}

    /* all the other stuff */
}

public class Phone_Save extends ActionBarActivity {
    private DataPojo dataPojo;
    // other members

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        dataPojo = new DataPojo();

        Intent intent = getIntent();
        dataPojo.setName(intent.getStringExtra("confirmed_name"));
        dataPojo.setRemainder(intent.getStringExtra("confirmed_text"));

        // other stuff...
    }
}