fragment简单实用及数据传递(1)

Fragment的使用相关

使用Fragment时,需要继承Fragment或者Fragment的子类,


直接贴代码,展示一个例子:

LeftFragment.java:
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class LeftFragment extends Fragment implements OnItemClickListener
{

	private String[] data = new String[]
	{ "灵魂战车2", "变形金刚3:月黑之时", "敢死队2" };
	private ListView listView;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		View view = inflater.inflate(R.layout.left_fragment, null);
		listView = (ListView) view.findViewById(R.id.listview_movie_list);
		listView.setOnItemClickListener(this);
		ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
				getActivity(), android.R.layout.simple_list_item_activated_1,
				data);
		listView.setAdapter(arrayAdapter);
		listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

		return view;
	}


	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id)
	{
		TextView textView = (TextView) getActivity().findViewById(
				R.id.textview_detail);
		String detail = "nihao";
		if (textView == null)
		{
			Intent intent = new Intent(getActivity(), DetailActivity.class);
			intent.putExtra("detail", detail);
			startActivity(intent);
		}
		else
		{
			textView.setText(detail);
		}
	}

}

left_fragment.xml
平板:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/titles"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="4"
        class="cn.eoe.first.fragment.LeftFragment" />
    <fragment
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        class="cn.eoe.first.fragment.RightFragment" />
</LinearLayout>  

手机
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" android:background="#FFF">

    <ListView
        android:id="@+id/listview_movie_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>  

RightFragment.java
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class RightFragment extends Fragment
{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		View view = inflater.inflate(R.layout.right_fragment, null);
		return view;
	}

}

right_fragment.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textview_detail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />

</LinearLayout>  

主程序:
import android.app.Activity;
import android.os.Bundle;

public class FirstFragmentActivity extends Activity
{

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_first_fragment);
	}

}

activity_first_fragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/titles"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="4"
        class="cn.eoe.first.fragment.LeftFragment" />
    <fragment
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        class="cn.eoe.first.fragment.RightFragment" />
</LinearLayout>  

DetailActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class DetailActivity extends Activity
{      
     
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_detail);
		TextView detail = (TextView)findViewById(R.id.textview_detail);
		detail.setText(getIntent().getExtras().getString("detail"));

	}   

}


activity_detail.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="cn.eoe.first.fragment.RightFragment" />

</RelativeLayout>



fragment之间的数据交互

发送:
public void onClick_SendData(View view)
	{
		MyFragment fragment = new MyFragment();
		Bundle bundle = new Bundle();
		String textdd = text.getText().toString();
		bundle.putString("name", textdd);
		fragment.setArguments(bundle);
		FragmentManager fragmentManager = getFragmentManager();
		FragmentTransaction fragmentTransaction = fragmentManager
				.beginTransaction();
		fragmentTransaction.add(R.id.fragment_container1, fragment, "fragment");
		fragmentTransaction.commit();
		Toast.makeText(this, "数据已成功传递.", Toast.LENGTH_LONG).show();
	}


接受
String name = getFragmentManager().findFragmentByTag("fragment")
				.getArguments().getString("name");

猜你喜欢

转载自18767136122.iteye.com/blog/2098325
今日推荐