[英]setter getter on android
也许这是一个非常愚蠢的问题。 但是我坚持了5个小时,因为这个安装吸气剂。
我有Home_Fragment类,那里有id_product值。
public class Home_Fragment extends ListFragment {
private Detail_Produk dp;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
dp = new Detail_Produk("1");
//** After this i call another activity but not Detail_Produk
}
在我的Detail_Produk类中
String test;
View v;
public Detail_Produk() {
super();
}
public Detail_Produk(String test) {
super();
this.test = test;
}
public String getIDProduk() {
return test;
}
public void setIDProduk(String test) {
this.test = test;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.detail_produk, container, false);
Toast.makeText(getActivity(), "ID : " + getIDProduk().toString(), Toast.LENGTH_SHORT).show();
return v;
}
当我从另一个活动(不是Home_Fragment)中调用活动Detail_Produk时。 在线Toast它给了我错误Java.Lang.NullPointerException。
我的代码错误,或者因为我不是从Home_Fragment调用Detail_Product Activity而无法执行?
还是应该使用共享首选项?
之前感谢:)
这里的问题是,在onActivityCreated()
完成后,您正在Home_Fragment
显式创建的Detail_Produk
实例(并将test
值传递给它)会丢失。
当您的其他活动请求启动Detail_Produk
活动时,Android框架会实例化实际调用onCreateView()
实例。 该实例未设置其test
值,因此您获得了NPE。
您应该通过Intent
extra传递此值。 看看这本Android开发人员教程,了解一个Activity
如何从启动它的Intent
中检索数据。
http://developer.android.com/training/basics/firstapp/starting-activity.html#ReceiveIntent
dp = new Detail_Produk(1);
1
不是字符串。 而且Detail_Produk没有接受整数参数的构造函数。 不知道这是怎么回事。 您的代码不应编译,更不用说NPE了,我假设这是getIDProduk()。toString()
我认为您应该使用共享首选项,因此该值将保持不变。您可以在Home_Fragment中创建静态变量,然后在其中保存值并在Detail_Produk类中访问它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.