2017-01-25 1 views
-2

안녕하세요 여러분, 제 fragment3에있는 내 메소드 signIn을 호출하는 데 문제가 있습니다. 활동에서 그것을 부르려고하는 임. 여기 내 코드를 호출하려고합니다. 이 라인에서 널 포인터를 얻는다면 fragmentTransaction.add (R.id.loginfragment, fragment); 나는 내가 당신에게 내 코드의 나머지 부분에 대한 많은 정보를 제공하지는 못했지만 다른 것들이 필요하다면 알려주는 것을 알고있다. 나는이 수입품들을 내 수업과 조각들로 사용하고있어. 어떤 충고라도 좋을 것입니다! 미리 감사드립니다.액티비티의 프래그먼트에서 메소드를 호출하여 null을 얻는 방법

import android.support.v4.app.Fragment; 

import android.support.v4.app.FragmentManager; 

import android.support.v4.app.FragmentTransaction; 

      Fragment3 fragment = (Fragment3) getSupportFragmentManager().findFragmentById(R.id.loginfragment); 
      FragmentManager fm = getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
      getSupportFragmentManager().executePendingTransactions(); 
      fragmentTransaction.add(R.id.loginfragment, fragment); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

      fragment.signIn(); 

답변

1

등은 EventBus과 같은 라이브러리를 사용하여 코드를 연결할 수 있습니다.

유 예를 들어 수행 할 이벤트를 구현하는 클래스 정의 : LogOutEvent.java를

public static class LogOutEvent { /* Additional fields if needed */ } 
U는
EventBus.getDefault().post(new LogOutEvent()); 

와의 명령

다음 사용 에서 Activity.java을 로그 아웃 등의 이벤트를 게시 할 수 있습니다

조각 먼저 이벤트 버스를 등록해야합니다.

,210

다음 조각에서이

@Subscribe(threadMode = ThreadMode.MAIN) 
public void onMessageEvent(LogOutEvent event) {/* Do operation here */}; 

업데이트 같은 이벤트를 구독 할 수 있습니다 : 를 acitviy에서 같은 것을 할.

ExampleFragment fragment = (ExampleFragment) getFragmentManager(). findFragmentById (R.id.example_fragment); 단편.();

+0

제안 해 주셔서 감사합니다.하지만 이미 가지고있는 것을 고치는 방법을 찾고있었습니다. –

+0

끝 부분의 업데이트를 참조하십시오. – Vicky

+0

시도해 보니, 행운이 없습니다. 같은 오류. java.lang.NullPointerException : null 객체 참조에서 가상 메소드 'void com.BarTabs.fragment.Fragment3.signIn()'을 호출하려고 시도했습니다. –

2

현재 어떤 조각이 실행되고 있는지 전혀 알지 못하기 때문에 Fragment3이 현재 실행되고 있지 않다는 가정을 할 것입니다.

첫 번째 내용 findFragmentById(R.id.container)은 조각 컨테이너 ID를 가져 와서 조각 컨테이너에서 실행중인 현재 조각을 가져옵니다.

조각을 추가하고 signIn 함수를 실행하려면 아래 코드를 시도하십시오. 여기

Fragment3 fragment = new Fragment3(); getSupportFragmentManager().beginTransaction.replace(R.id.container,fragment).commit(); fragment.signIn(); 는 ID가 fragment_container ID가 아닌 조각 아이디 있는지 확인합니다.

관련 문제