2017-10-29 5 views
0

バックスタックには1フレームと2フラグメントの使用がありますが、問題がありました。 フレームにフラグメント2を追加し、Backstackに追加するとします。私はfragment2上の同じ場所をクリックすることができますが、効果はフラグメント1にあります。どのように修正することができますか?ありがとうalots!あなたのfragment2レイアウトXMLファイルに1フレームに2つのフラグメントがあります

Fragment1.java

public class Fragment1 extends Fragment { 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_1,container,false); 
    Button b = (Button)view.findViewById(R.id.btn1); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getActivity(),"FR1",Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    return view; 
} 

} BackstackActivity

public class BackstackActivity extends AppCompatActivity { 
private Button btnFrag; 
@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_backstack); 
    btnFrag = (Button) findViewById(R.id.btn_replace_fragment); 

    btnFrag.setOnClickListener(new View.OnClickListener() { 

     @Override 

     public void onClick(View view) { 

      addFragment(new Fragment2()); 
      Log.e("Replaced fragment", "2"); 
     } 

    }); 
    replaceFragmentContent(new Fragment1()); 
} 
protected void replaceFragmentContent(Fragment fragment) { 

    if (fragment != null) { 

     FragmentManager fmgr = getSupportFragmentManager(); 

     FragmentTransaction ft = fmgr.beginTransaction(); 

     ft.replace(R.id.container_body, fragment); 

     ft.commit(); 

    } 

} 
protected void addFragment(Fragment fragment) { 

    FragmentManager fmgr = getSupportFragmentManager(); 

    FragmentTransaction ft = fmgr.beginTransaction(); 

    ft.add(R.id.container_body, fragment); 

    ft.addToBackStack(fragment.getClass().getSimpleName()); 

    ft.commit(); 

} 

}

+0

あなたの 'fragment2'のクラス詳細を追加してください。 – codeFreak

答えて

0

clickable="true"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:clickable="true" 
    android:background="#ffffff" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
としてあなたルートレイアウトを設定しました
+0

ありがとうございました:)) –

+0

@tuấnvũhữuよろしくお願いします。それがあなたを助けるなら、私の答えを受け入れてください:) – SiSa

関連する問題