利用fragment实现界面跳转
- 任务要求
利用fragment实现界面跳转功能,完成效果如下图所示
图片1
我的想法是在xml文件里设置Button。再创建一个fragment文件。在java文件中动态加载fragment完成第一张效果。点击按钮后在动态加载一张fragment实现setcontent方法改写内容字符串。点击返回键返回第一张fragment
xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.interfacejunmp.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/first"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ZT1"/>
</LinearLayout>
</RelativeLayout>
fragment文件
<FrameLayout 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"
tools:context="com.example.administrator.interfacejunmp.MyFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/txt_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/this_is_first_fragment"
android:gravity="center"
style="@style/ZT3"/>
</FrameLayout>
java代码
activity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private MyFragment g1;
private Button first;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button first = (Button)findViewById(R.id.first);
first.setOnClickListener(this);
FragmentManager ft = getFragmentManager();
FragmentTransaction fc= ft.beginTransaction();
g1 = new MyFragment();
fc.add(R.id.activity_main,g1);
fc.commit();
}
@Override
public void onClick(View v){
FragmentManager FragmentManager = getFragmentManager();
FragmentTransaction fTransaction = FragmentManager.beginTransaction();
switch(v.getId()){
case R.id.first:
if(g1!=null){
g1 = new MyFragment();
g1.setContent("This is second fragment!");
fTransaction.replace(R.id.activity_main,g1);
fTransaction.commit();
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
g1 = new MyFragment();
transaction.replace(R.id.activity_main,g1);
transaction.commit();
}
return super.onKeyDown(keyCode, event);
}
}
fragment代码
public class MyFragment extends Fragment {
private String content;
public MyFragment() {
String s = "This is first fragment!";
content = s;
}
public void setContent(String content){
this.content = content;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
TextView show = (TextView)view.findViewById(R.id.txt_show);
show.setText(content);
return view;
}
}
实现图: