android上的setter getter

时间:2015-03-01 07:13:54

标签: java android setter getter

也许这是一个非常愚蠢的问题。但我坚持了5个小时,因为这个二传手吸气。

我有类Home_Fragment,那里有值id_product .. 这是我的Home_Fragment类

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?

或者我应该使用共享偏好设置?

之前感谢:)

3 个答案:

答案 0 :(得分:1)

此处的问题是,您Detail_Produk中明确创建的Home_Fragment实例(并将test值传递给)会在{{onActivityCreated()时丢失1}}完成。

当您的其他活动请求启动onCreateView()活动时,Android框架会实例化实际调用Detail_Produk的实例。该实例没有设置test值,因此您获得了NPE。

您应该通过Intent额外传递此值。请查看此Android开发人员教程,了解Activity如何从启动它的Intent中检索数据。

http://developer.android.com/training/basics/firstapp/starting-activity.html#ReceiveIntent

答案 1 :(得分:0)

dp = new Detail_Produk(1);

1不是字符串。而Detail_Produk没有接受整数参数的构造函数。不知道这里发生了什么。你的代码不应该编译,更不用说barf了NPE,我假设在这里getIDProduk()。toString()

答案 2 :(得分:0)

我认为您应该使用共享首选项,因此值仍将保留 另一种可以在Home_Fragment中创建静态变量的方法,在其中保存值并在Detail_Produk类中访问它