2013-06-05 2 views
3

Так у меня есть этот код в одном fragment (Info_Frag)становится нулевой указатель при прохождении пучка

storeNum = store.getText().toString(); 
phoneNum = phone.getText().toString(); 
add = address.getText().toString(); 
cit = city.getText().toString(); 
zipCode = zip.getText().toString(); 
state_picked = myStates.getSelectedItem().toString(); 

Bundle bundle = new Bundle(); 
Fragment f = new Fragment(); 
bundle.putString("store", storeNum); 
bundle.putString("phone", phoneNum); 
bundle.putString("address", add); 
bundle.putString("city", cit); 
bundle.putString("zip", zipCode); 
bundle.putString("state", state_picked); 
f.setArguments(bundle); 

Я заменить фрагмент как этот

Fragment fragment = new StoreInfo_Fragment(); 
       getFragmentManager() 
         .beginTransaction() 
         .setCustomAnimations(android.R.animator.fade_in, 
           android.R.animator.fade_out) 
         .replace(R.id.storeInfo_fragment_container, 
           fragment).commit(); 

Тогда в другой fragment (StoreInfo_Fragment) Я называю это так

public class StoreInfo_Fragment extends Fragment { 
    View view; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) {   

     view = inflater.inflate(R.layout.fragment_store_info, container, 
       false); 

     String mStore = getArguments().getString("store"); 
     String mPhone = getArguments().getString("phone"); 
     String mAddress = getArguments().getString("address"); 
     String mCity = getArguments().getString("city"); 
     String mZip = getArguments().getString("zip"); 
     String mState = getArguments().getString("state"); 

     TextView store = (TextView) view.findViewById(R.id.store); 
     TextView phone = (TextView) view.findViewById(R.id.phone); 
     TextView address = (TextView) view.findViewById(R.id.address); 
     TextView city = (TextView) view.findViewById(R.id.city); 
     TextView zip = (TextView) view.findViewById(R.id.zip); 
     TextView state = (TextView) view.findViewById(R.id.state); 

     store.setText(mStore); 
     phone.setText(mPhone); 
     address.setText(mAddress); 
     city.setText(mCity); 
     zip.setText(mZip); 
     state.setText(mState);  

     return view; 
    } 
} 

Что при запуске дает мне ошибку, cr ashing мое приложение. Он говорит мне, что есть исключения нулевого указателя из этой линии

String mStore = getArguments().getString("store"); 

Очевидно, что означает, что я не передавая узелок правильно, и все вызовы дадут НЭП. Где я неправ?

+0

Как вы можете заменить Фрагмент? Пожалуйста, добавьте это на свой вопрос. – Ahmad

+0

@Ahmad отредактировал сообщение для отображения –

+1

Вы уверены, что задаете аргументы во втором фрагменте? Я не вижу, что в коде, который вы отправили, где вы меняете второй фрагмент – dymmeh

ответ

1

Изменить код этого:

Bundle bundle = new Bundle(); 
Fragment fragment = new StoreInfo_Fragment(); 
bundle.putString("store", storeNum); 
bundle.putString("phone", phoneNum); 
bundle.putString("address", add); 
bundle.putString("city", cit); 
bundle.putString("zip", zipCode); 
bundle.putString("state", state_picked); 
fragment.setArguments(bundle); 

// You should use getSupportFragmentManager() here, if you want your app to be backwards compatible 
getFragmentManager() 
     .beginTransaction() 
     .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out) 
     .replace(R.id.storeInfo_fragment_container, fragment) 
     .commit(); 

Вы не устанавливая аргументы фрагмента вы вызываете сделку по.

+0

спасибо! это сработало –

Смежные вопросы