您的位置:首页 > 移动开发 > Android开发

Android之片段Fragment的实践(二)

2016-07-04 09:50 489 查看
先看效果图吧:



activity_main中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/layout">
</FrameLayout>

<!-- 使用fragment静态加入Fragment -->
<fragment
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/frag"
android:name="com.example.fragmentapp.MainFragment"/>
<fragment
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/list"
android:name="com.example.fragmentapp.ListFragmentTest"/>

</LinearLayout>


ListFragment:

package com.example.fragmentapp;

import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
//ListFragment有默认的布局文件
public class ListFragmentTest extends ListFragment{

@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//初始化数据
String[] data=new String[30];
for(int i=0;i<30;i++)
data[i]="hello"+i;
ArrayAdapter<String>adapter=new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,data);
setListAdapter(adapter);
}

//点击列表项时被触发
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Toast.makeText(getActivity(),
"点击了:"+l.getAdapter().getItem(position), 0).show();
}
}


MainFragment:

package com.example.fragmentapp;

import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
//主Fragment
public class MainFragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view=inflater.inflate(R.layout.main_fragment, container, false);
//替换片段
Button btn1=(Button)view.findViewById(R.id.change);
btn1.setOnClickListener(new OnClickListener() {
//替换
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//替换Fragment
FragmentTransaction ft=getFragmentManager().beginTransaction();
SecondFragment fragment=new SecondFragment();
ft.replace(R.id.layout, fragment, "second");
//将该事务添加到回退桟中
ft.addToBackStack("second");
ft.commit();
}
});
return view;
}
}


MainActivity:

package com.example.fragmentapp;

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

private FragmentManager fm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一步:获取FragmentManger对象
fm=getFragmentManager();
//第二步:开启事务
FragmentTransaction ft=fm.beginTransaction();
//第三步:操作Fragment(添加,替换,删除)
//第三个参数标签名,起到标识作用
FirstFragment fragment=new FirstFragment();
ft.add(R.id.layout,fragment,"first");
ft.addToBackStack("first");
//第四步:提交事务
ft.commit();

//删除片段
Button btn2=(Button) findViewById(R.id.remove);
btn2.setOnClickListener(new OnClickListener() {
//删除
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
FragmentTransaction ft=fm.beginTransaction();
ft.remove(fm.findFragmentByTag("first"));
ft.commit();
}
});
}
}


代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息