2017-11-23 25 views
0

私はrecyclerviewでアクティビティを持っています。 recyclerのアダプタでは、ユーザーが要素をクリックすると、新しいFragmentが作成されます。問題は、ホームボタンを押してアプリプロセスを終了してアプリを復元すると、そのフラグメントが再作成されないということです。アプリのプロセスが終了したら、どのようにフラグメントを復元できますか?アプリプロセスが終了した後にフラグメントが復元されない

EDIT:活動の

私のonCreateメソッド:フラグメントが呼び出されrecyclerviewアダプタ内のメソッドonBindViewHolder

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     context = this; 

     rvMain = (RecyclerView) findViewById(R.id.rvMain); 
     rvMain.setLayoutManager(new LinearLayoutManager(context)); 
     MainAdapter adapter = new MainAdapter(numbers, context); 
     rvMain.setAdapter(adapter); 
    } 

@Override 
    public void onBindViewHolder(MainViewHolder holder, final int position) { 
     final Number number = numbers.get(position); 

     holder.lytMain.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       DetailedFragment fragment = new DetailedFragment(); 
       Bundle bundle = new Bundle(); 
       bundle.putString("message", number.getName()); 
       fragment.setArguments(bundle); 

       ((MainActivity) context).getSupportFragmentManager().beginTransaction() 
         .addToBackStack("fragment") 
         .replace(R.id.lytDetailed, fragment) 
         .commit(); 

      } 
     }); 


    } 
+0

あなたのコードを投稿することができますか? –

+0

@YusufÇağlarがコードを追加しました – user1852879

答えて

0

私は解決策を見つけ、私はフラグメントを呼び出す移動しましたMainActivity内のメソッドに渡してから、onSaveInstanceStateでフラグメントインスタンスを保存し、それをonRestoreInstanceStateで復元します。それはどのように見えるのですか?アダプタで

onBindViewHolder:

@Override 
    public void onBindViewHolder(MainViewHolder holder, final int position) { 
     final Number number = numbers.get(position); 

     holder.lytMain.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ((MainActivity)context).getFragment(number); 
      } 
     }); 
    } 

getFragment MainActivityで()メソッド:

public void getFragment(Number number){ 
     fragment = new DetailedFragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putString("message", number.getName()); 
     fragment.setArguments(bundle); 

     getSupportFragmentManager().beginTransaction() 
       .addToBackStack("fragment") 
       .replace(R.id.lytDetailed, fragment) 
       .commit(); 
    } 

onSaveInstanceStateとonRestoreInstanceState:

@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     getSupportFragmentManager().putFragment(outState, "detailed_fragment", fragment); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle outState) { 
     super.onRestoreInstanceState(outState); 
      fragment = (DetailedFragment) getSupportFragmentManager() 
        .getFragment(outState, "detailed_fragment"); 

      getSupportFragmentManager().beginTransaction() 
        .addToBackStack("fragment") 
        .replace(R.id.lytDetailed, fragment) 
        .commit(); 
    } 
関連する問題