package com.android.FragmentExample;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;
public class FragmentExampleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_layout);
}
public static class DetailsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
finish();
return;
}
if (savedInstanceState == null) {
DetailsFragment details = new DetailsFragment();
details.setArguments(getIntent().getExtras());
getFragmentManager().beginTransaction().add(android.R.id.content, details).commit();
}
}
}
public static class TitlesFragment extends ListFragment {
boolean mDualPane;
int mCurCheckPosition = 0;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));
View detailsFrame = getActivity().findViewById(R.id.details);
mDualPane = detailsFrame != null && detailsFrame.getVisibility() == View.VISIBLE;
if (savedInstanceState != null) {
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
if (mDualPane) {
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
showDetails(mCurCheckPosition);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
showDetails(position);
}
void showDetails(int index) {
mCurCheckPosition = index;
if (mDualPane) {
getListView().setItemChecked(index, true);
DetailsFragment details = (DetailsFragment)getFragmentManager().findFragmentById(R.id.details);
if (details == null || details.getShownIndex() != index) {
// Make new fragment to show this selection.
details = DetailsFragment.newInstance(index);
// Execute a transaction, replacing any existing fragment
// with this one inside the frame.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.details, details);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
} else {
// Otherwise we need to launch a new activity to display
// the dialog fragment with selected text.
Intent intent = new Intent();
intent.setClass(getActivity(), DetailsActivity.class);
intent.putExtra("index", index);
startActivity(intent);
}
}
}
public static class DetailsFragment extends Fragment {
public static DetailsFragment newInstance (int index) {
DetailsFragment f = new DetailsFragment();
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
public int getShownIndex() {
return getArguments().getInt("index", 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
ScrollView scroller = new ScrollView(getActivity());
TextView text = new TextView(getActivity());
int padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
4, getActivity().getResources().getDisplayMetrics());
text.setPadding(padding, padding, padding, padding);
scroller.addView(text);
text.setText(Shakespeare.DIALOGUE[getShownIndex()]);
return scroller;
}
}
}
分享到:
相关推荐
Fragment实例的创建和使用主要包括以下几个方面: 1. **创建Fragment** 创建Fragment通常涉及到两个步骤:定义一个继承自Fragment的类,并在该类中实现必要的逻辑。例如: ```java public class MyFragment ...
- FragmentTransaction是用来操作Fragment实例的,包括add(), remove(), replace(), show(), hide()等方法,用于添加、删除、替换或隐藏Fragment。 6. **Fragment实例分析**: - `TestFragmentSplit.zip`可能包含...
标题"Fragment实例一(源码)"暗示我们将探讨一个关于Fragment的简单实现,这通常包括创建一个新的Fragment类,将它添加到Activity中,并处理与之相关的生命周期方法。在Android Studio中,开发者通常会创建一个继承...
在这个实例中,我们将深入探讨Fragment的使用,特别是如何利用它来实现类似底部菜单栏的效果。 首先,Fragment可以看作是Activity的一部分,它有自己的生命周期和UI。它允许开发者将应用的界面分解为更小、更易管理...
在“炫酷Fragment实例二代码”中,我们可以预期学习到以下关键知识点: 1. **Fragment的生命周期**:与Activity类似,Fragment也有自己的生命周期方法,如onCreate(), onCreateView(), onViewCreated(), ...
"一个Android -Fragment实例"的DEMO主要展示了如何使用Fragment来实现功能的分割和交互。 首先,Fragment的创建通常涉及到以下几个步骤: 1. 创建一个新的Fragment类:继承自Fragment基类,重写其中的方法,如...
下面我们将深入探讨如何实现“动态加载Fragment实例”的源码分析。 首先,我们需要理解Fragment的基本概念。Fragment是一个可以包含UI元素的轻量级组件,它可以独立于Activity存在,也可以在多个Activity之间共享。...
在“fragment实例”这个主题中,我们将深入探讨如何在Android应用中有效地使用Fragment。首先,创建一个Fragment需要继承Fragment类或其特定的子类,如ListFragment、DialogFragment等。然后,我们需要重写其中的...
总结来说,这个Android Fragment实例展示了如何在两个Fragment之间进行通信,以及如何在用户交互(例如点击列表项)时动态改变UI。`TitlesFragment`负责展示列表并响应点击事件,`DetailFragment`则展示与列表项相关...
在这个"slidingmenu+fragment实例demo"中,我们将深入探讨这两个概念以及如何将它们结合起来实现一个实际的应用场景。 `SlidingMenu`是一个库,它为Android应用提供了侧滑菜单的功能,类似于许多流行的应用如Google...
在这个"android界面切换 Fragment实例"中,我们将深入探讨如何使用Fragment进行界面切换。 Fragment的创建首先需要继承Fragment类并实现其生命周期方法。例如,我们可以创建一个名为`MyFragment`的类,包含`...
在这个"Fragment实例-Android Studio项目"中,我们可以深入理解Fragment的使用方法以及如何在不同设备上适配。 1. **Fragment基本概念** Fragment是Activity的一部分,可以包含UI组件和业务逻辑。它们可以在一个...
本实例教程将带你深入理解并轻松掌握Android Fragment的使用。 首先,Fragment并不是一个独立的Activity,而是Activity的一部分,它可以嵌入到Activity中,提供单独的用户界面和交互逻辑。Fragment有自己的生命周期...
首先,创建一个BFragment实例,然后使用FragmentManager和FragmentTransaction来替换当前显示的Fragment为BFragment。例如: ```java BFragment bFragment = new BFragment(); FragmentTransaction transaction =...
Android Studio 动态加载 Fragment 和获取实例的方法 Android Studio 是一个功能强大的集成开发环境(IDE),它提供了许多实用的功能和工具来帮助开发者快速构建高质量的 Android 应用程序。在 Android 开发中,...
在"fragmentdemo简单实例"中,我们可以学习到以下几个关键知识点: 1. **Fragment的创建**:首先,你需要创建一个继承自`android.app.Fragment`或`androidx.fragment.app.Fragment`的类。在这个类中,通常会重写`...
本实例"Fragment实现tab"主要展示了如何使用Fragment和FragmentTabHost来创建一个带有标签切换功能的界面。接下来,我们将详细讨论Fragment以及如何使用它们来实现tab切换效果。 Fragment是Android 3.0(API级别11...
在Android应用开发中,Activity和Fragment是两个核心组件。Activity作为应用程序的主要入口点,负责处理用户交互和控制屏幕上的视图。而Fragment则是一个可嵌入到Activity中的UI模块,它有自己的生命周期,可以独立...