2017-09-13 5 views
1

MVPを使用しています。私の活動には一つの断片が含まれています。私は初期化して、メインアクティビティのCreateメソッドの中でプレゼンタを以下のように断片化するように設定しています。MVP(Android)のプレゼンターが削除されました/フラグメント内でnullになりました

public class MainActivity extends AppCompatActivity { 

    private StashPresenter stashPresenter; 
    private MainFragment mainFragment; 
    FragmentManager fm; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    App.getInstance().getAppComponent().inject(this); 
    setContentView(R.layout.activity_main); 

    fm = getSupportFragmentManager(); 

    fm.beginTransaction() 
    .add(R.id.fragment_container, MainFragment.newInstance(),"mainFragment") 
    .commitNow(); 

    mainFragment = (MainFragment) fm.findFragmentById(R.id.fragment_container); 

    stashPresenter = new StashPresenter(mainFragment); 

    mainFragment.setPresenter(stashPresenter); 
} 

私のmainFrgamentクラス内では、次のようにsetPresenterFunctionにPresenterを設定しています。

public class MainFragment extends Fragment implements 
StashContract.PublishToView { 

public StashContract.ToPresenter forwardInteraction; 

public void setPresenter(StashContract.ToPresenter forwardInteraction) 
{ 
    this.forwardInteraction = forwardInteraction; 
} 

mainFragmentのOnCreateView内部私の次のコードに示すように、検索操作の実行中に時々、私は私の前方

を「NULLオブジェクト参照のインターフェイスメソッドを呼び出すしよう」というエラーを取得しますいつかこのエラーが出る、時々私はしない。これはフラグメントの「onCreateView」方法では

​​

答えて

0

ソリューション

が起こっているなぜ私だけのビューを初期化し、理解していません。

残りのコードを "onResume"メソッドで移動します。エラー

チェックあなたが見ることができるようにあなたがあなたの活動に「のonCreate」メソッドにあるとき、あなたのフラグメントの「onCreateViewが」

enter image description here

と呼ばれるこのイメージの

理由。

コードの現在の状態では、プレゼンターを初期化する前にプレゼンターを使用しようとするときがあります。

したがって、あなたのアクティビティの "onCreate"メソッドで提示されたものを設定し、それをフラグメントの "onStart"または "onResume"に使用してください。

これは、projectで、MVPアーキテクチャの詳細を確認できます。

+0

mainActivityのonCreateメソッドでプレゼンターを設定してから、onStart()内でPresenterを使用しても機能しません。 私が気付いたもう一つの事は、mainFrgamentのonResume()メソッドが2回呼び出されることです。 –

関連する問題