Fragment(複数のactivityインタフェースを1画面に同時に表示)sample
4988 ワード
この小さな例は主にFragmentの重要な機能を実現するために使用されます.
Fragmentはactivityの使用限界を補うことができる:すなわち、複数のactivityインタフェースを1つの画面に同時に表示できない
コードを見てください:
MainActivity.java:
1.load設計のlayout、fragmentが2つ含まれる
2.titlefragmentをロードする前に
レイアウトファイル:layout_Weightの目的はスクリーン幅を均等に分けることです
FrameLayoutはdetailsfragmentをロードしたviewキャリアですね~~~
ps:このレイアウトでは、インタフェース全体が空白の代替領域として扱われ、すべてのサブ要素が配置された位置を指定できません.これらはすべてこの領域の左上隅に配置され、後ろのサブ要素は直接前のサブ要素の上に覆われ、前のサブ要素の部分とすべてを遮蔽します.
activity_main.xml
TitlesFragment.java
あるitemをクリックするとdetailsFragmentがロードされます
DetailsFragment.java
ダウンロードコード:http://download.csdn.net/detail/null1989/6342785
Fragmentはactivityの使用限界を補うことができる:すなわち、複数のactivityインタフェースを1つの画面に同時に表示できない
コードを見てください:
MainActivity.java:
1.load設計のlayout、fragmentが2つ含まれる
2.titlefragmentをロードする前に
package com.example.myfragment;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//fragment layout
setContentView(R.layout.activity_main);
// title ListFragment
TitlesFragment titleFragment = new TitlesFragment();
this.getFragmentManager().beginTransaction()
.add(titleFragment, "title").commit();
}
}
レイアウトファイル:layout_Weightの目的はスクリーン幅を均等に分けることです
FrameLayoutはdetailsfragmentをロードしたviewキャリアですね~~~
ps:このレイアウトでは、インタフェース全体が空白の代替領域として扱われ、すべてのサブ要素が配置された位置を指定できません.これらはすべてこの領域の左上隅に配置され、後ろのサブ要素は直接前のサブ要素の上に覆われ、前のサブ要素の部分とすべてを遮蔽します.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/titles"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
class="com.example.myfragment.TitlesFragment" />
<FrameLayout
android:id="@+id/details"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
TitlesFragment.java
あるitemをクリックするとdetailsFragmentがロードされます
package com.example.myfragment;
import android.app.ListFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class TitlesFragment extends ListFragment {
private String[] mString = { "0", "1", "2" };
// Provide default implementation to return a simple list view.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Log.i("FragmentList", "Item clicked: " + id);
DetailsFragment detailsFragment = (DetailsFragment) getActivity()
.getFragmentManager().findFragmentById(R.id.details);
detailsFragment = DetailsFragment.newInstance(position);
getActivity().getFragmentManager().beginTransaction()
.replace(R.id.details, detailsFragment).commit();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayAdapter arrayAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, mString);
setListAdapter(arrayAdapter);
}
}
DetailsFragment.java
package com.example.myfragment;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class DetailsFragment extends Fragment {
private static int mIndex;
//Fragment , setArguments
public static DetailsFragment newInstance(int index) {
Log.d("FragmentList", "DetailsFragment newInstance");
mIndex = index;
DetailsFragment details = new DetailsFragment();
Bundle args = new Bundle();
args.putInt("index", index);
details.setArguments(args);
Log.d("FragmentList", "index :"
+ details.getArguments().getInt("index"));
return details;
}
// view ,layout <FrameLayout> view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.d("FragmentList", "DetailsFragment onCreateView");
if (container == null)
return null;
TextView tv = new TextView(getActivity());
tv.setText("details: " + mIndex);
return tv;
}
}
ダウンロードコード:http://download.csdn.net/detail/null1989/6342785