2017-03-04 4 views
2

Ich möchte die Fragmentmethode aufrufen, wenn ich auf den FloatingActionButton klicke.
Ich benutze Butterknife.Der Aufruf einer Fragmentmethode in einer Aktivität verursacht eine Nullzeigerausnahme

Fehler:

PID: 9956 java.lang.NullPointerException: Attempt to invoke virtual method 'void com.fischerdaniel.testapp.FirstFragment.setTvText()' on a null object reference

Der Teil des MainActicity:

@OnClick({R.id.fab_one, R.id.fab_two, R.id.fab_three}) public void test(View view) { 
     switch (view.getId()) { 
      case R.id.fab_three: 
       FirstFragment firstFragment = (FirstFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_first); 
       firstFragment.setTvText(); 
       break; 
      default: 
       break; 
     } 
    } 

Der Teil des Fragments:

@BindView(R.id.et_one) EditText etOne; 
    @BindView(R.id.et_two) EditText etTwo; 
    @BindView(R.id.tv_one) TextView tvOne; 
    @BindView(R.id.tv_two) TextView tvTwo; 

    private Unbinder unbinder; 

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_first, container, false); 
     unbinder = ButterKnife.bind(this, view); 

     return view; 
    } 

    protected void setTvText() { 
     tvOne.setText(etOne.getText()); 
     tvTwo.setText(etTwo.getText()); 
    } 
+0

Sie es von refrence –

Antwort

0
public void onMenuItemClick(View clickedView, int position) { 
    switch (position){ 
     case 1: 
      fragmentChanger("Notifications",new notifyFragment()); 
      break; 
     case 2: 
      fragmentChanger("QR Code",new qrFragment()); 
      break; 
     case 3: 
      fragmentChanger("User ID",new MainFragment()); 
      break; 
     case 4: 
      fragmentChanger("Settings",new settingsFragment()); 
      break; 
     default: 
      Toast.makeText(this, "Clicked on position: " + position, Toast.LENGTH_SHORT).show(); 
      break; 
    } 
} 

//function that does the trasaction when a fragment object is passed 
//R.id.container is my default frame 
public void fragmentChanger(String title, Object expectedFragment){ 
    // mToolBarTextView.setText(title); 
    transaction = fragmentManager.beginTransaction(); 
    transaction.replace(R.id.container, (Fragment) expectedFragment); 
    transaction.addToBackStack(null); 
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    transaction.commit(); 
} 
+1

Sieht detaillierte fordern aber etwas erklärender Text benutzen konnten. Siehe [Wie schreibe ich eine gute Antwort?] (Http://stackoverflow.com/help/how-to-answer). – Cheticamp

+0

das fragment ist in einem viewpager –

0

diesen Link ansehen: findFragmentById always returns null

Wenn Sie Ihr Fragment erstellen, verwenden:

add(int id, Fragment fragment, String tag) 

und dann Fragment, Verwendung zu erhalten:

findFragmentByTag(String tag) 
+0

das fragment ist in einem viewpager –

Verwandte Themen