activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <FrameLayout android:id="@+id/content_layout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <FrameLayout android:id="@+id/detail_layout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> MainActivity.java: public class MainActivity extends AppCompatActivity implements NewsFragment.OnNewsSelectedListener { private NewsFragment newsFragment; private DetailFragment detailFragment; private FragmentManager fragmentManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = getSupportFragmentManager(); newsFragment = (NewsFragment) fragmentManager.findFragmentByTag("news"); if (newsFragment == null) { newsFragment = new NewsFragment(); } fragmentManager.beginTransaction() .replace(R.id.content_layout, newsFragment, "news") .commit(); } @Override public void onNewsSelected(News news) { detailFragment = DetailFragment.newInstance(news); fragmentManager.beginTransaction() .replace(R.id.detail_layout, detailFragment) .addToBackStack(null) .commit(); } } NewsFragment.java: public class NewsFragment extends Fragment { private OnNewsSelectedListener listener; public interface OnNewsSelectedListener { void onNewsSelected(News news); } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnNewsSelectedListener) { listener = (OnNewsSelectedListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnNewsSelectedListener"); } } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_news, container, false); // view initialization and event handling return view; } // other fragment lifecycle methods and logic }


上一篇:
下一篇:
切换中文