新 POJO 对象的问题
Issue with new POJO Object
我刚刚制作了我的第一个 POJO Class,它采用两个字符串和一个字符串数组并将它们组合成一个(缺少更好的术语)包。直到最后一部分,一切似乎都运行良好。这是我的代码:
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);
}
}
不幸的是,我无法将名称设置为上面引用的任何字符串。对我来说,似乎我应该能够。而且我不能在其中输入默认名称,例如:
combine.setName("default name");
因为名称来自用户输入,每次都不一样。我的问题是如何将下面的字符串数组的值设置为上面引用的 cName 之类的字符串?
谢谢!
添加代码
public class 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();
}
});
}
首先,dataPOJO
不应扩展 Phone_Save
。 dataPOJO
不需要做任何事情,这取决于它是 Activity
(至少基于您向我们展示的内容)。如果你想让 class 将这些信息存储在一个地方,那很好;否则只需将它们存储在 Phone_Save
本身中。现在您似乎正试图同时执行这两项操作,这令人困惑。
其次,在 OnClickListener 中调用 new dataPOJO()
分配一个对象,然后丢弃它,因为它没有被分配给任何东西。这也是一个完全不同的对象,对这个没有影响。
第三,Android 上的 main
方法没有任何用处,它永远不会被调用(除非你自己调用它,无论如何这都是没有意义的)。
我会让 dataPOJO 成为它自己的 class,它不会扩展任何内容并摆脱无参数构造函数(或者保留它但删除其中的代码)。在你的 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...
}
}
我刚刚制作了我的第一个 POJO Class,它采用两个字符串和一个字符串数组并将它们组合成一个(缺少更好的术语)包。直到最后一部分,一切似乎都运行良好。这是我的代码:
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);
}
}
不幸的是,我无法将名称设置为上面引用的任何字符串。对我来说,似乎我应该能够。而且我不能在其中输入默认名称,例如:
combine.setName("default name");
因为名称来自用户输入,每次都不一样。我的问题是如何将下面的字符串数组的值设置为上面引用的 cName 之类的字符串? 谢谢! 添加代码
public class 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();
}
});
}
首先,dataPOJO
不应扩展 Phone_Save
。 dataPOJO
不需要做任何事情,这取决于它是 Activity
(至少基于您向我们展示的内容)。如果你想让 class 将这些信息存储在一个地方,那很好;否则只需将它们存储在 Phone_Save
本身中。现在您似乎正试图同时执行这两项操作,这令人困惑。
其次,在 OnClickListener 中调用 new dataPOJO()
分配一个对象,然后丢弃它,因为它没有被分配给任何东西。这也是一个完全不同的对象,对这个没有影响。
第三,Android 上的 main
方法没有任何用处,它永远不会被调用(除非你自己调用它,无论如何这都是没有意义的)。
我会让 dataPOJO 成为它自己的 class,它不会扩展任何内容并摆脱无参数构造函数(或者保留它但删除其中的代码)。在你的 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...
}
}