2015-03-01 2 views
0

может быть, это действительно глупый вопрос. но я застрял 5 часов, потому что этот сеттер получил.setter getter on android

я есть класс 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; 
} 

, когда я называю активность Detail_Produk от другой деятельности (не Home_Fragment). on line Toast его дает мне ошибку Java.Lang.NullPointerException.

Ошибка моего кода или я не могу, потому что я вызываю Detail_Product Activity не из Home_Fragment?

или я должен использовать общие настройки?

Спасибо, прежде чем :)

+0

По-моему, конструктор 'общественного Detail_Produk (тест String) {супер(); this.test = test; } 'никогда не используется. U должен убедиться, что через отладку. Поместите точку останова в конструктор. Также читайте о жизненном цикле активности и фрагментации. – OneWorld

ответ

0
dp = new Detail_Produk(1); 

1 не является строкой. И Detail_Produk не имеет конструктора, который принимает целочисленный аргумент. Не уверен, что здесь происходит. Ваш код не должен компилироваться, не говоря уже о запрете NPE, который я предполагаю здесь, здесь getIDProduk(). ToString()

+0

@RaviThapliyal Они изменили свой код. это было «1», когда я ответил. спасибо, я должен обновить свой ответ соответственно. или удалить его, если я не могу – Athena

0

Я думаю, вы должны использовать общие предпочтения, поэтому значение останется Другой способ создания статического переменная в Home_Fragment, сохранить значение в этом и получить доступ к нему в классе Detail_Produk

1

проблема здесь состоит в том, что Detail_Produk экземпляр, который вы создаете в явном виде в вашем Home_Fragment (и передавая значение test к) теряется, как только onActivityCreated() завершается.

Экземпляр, на который на самом деле вызывается onCreateView(), создается платформой Android, когда ваша другая активность просит начать работу Detail_Produk. У этого экземпляра нет его значения test, и, следовательно, вы получаете NPE.

Вы должны передать это значение через дополнительный номер Intent. Взгляните на это руководство для разработчиков Android о том, как Activity может извлекать данные из Intent, которые его запускали.

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