繁体   English   中英

在Android上使用setter getter

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM