fragment简略实用及数据传递(1)
fragment简单实用及数据传递(1)
Fragment的使用相关
使用Fragment时,需要继承Fragment或者Fragment的子类,
直接贴代码,展示一个例子:
LeftFragment.java:
left_fragment.xml
平板:
手机
RightFragment.java
right_fragment.xml
主程序:
activity_first_fragment.xml
DetailActivity.java
activity_detail.xml
fragment之间的数据交互
发送:
接受
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");