android 中FragmentActivity中模拟返回键返回上一个Activity效果

FragmentTransaction中先加入一个Fragment,这个Fragment就是当前要显示的Fragment,

当通过事件触发显示第二个Fragment时,在加入第二个Fragment并调用fragmentTransaction.addToBackStack(null);

在onBackPressed方法中调用mFragmentManager.popBackStack();回到第一个Fragment

package com.example.fragmentdemo;

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

public class MainActivity extends Activity {
    private FragmentManager mFragmentManager;
    private Fragment1 fragment1;
    private Fragment2 fragment2;
    private Button button1;
    private FragmentTransaction fragmentTransaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //新建两个Fragment
        fragment1 = new Fragment1();
        fragment2 = new Fragment2();
        mFragmentManager = getFragmentManager();
        //Fragment事务
        fragmentTransaction = mFragmentManager.beginTransaction();
        //增加执行的动画效果 动画不能用我们的Tween动画,后面会有代码
        fragmentTransaction.setCustomAnimations(R.anim.animation_view, R.anim.animation_view_exit);
        //加入1个Fragment
        fragmentTransaction.add(R.id.myFrameLayout, fragment1);
        fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        fragmentTransaction.commit();
        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                fragmentTransaction = mFragmentManager.beginTransaction();
                //执行动画,显示fragment2
                fragmentTransaction.setCustomAnimations(R.anim.animation_view, R.anim.animation_view_exit);
                if (fragment2.isAdded()) {
                    fragmentTransaction.commit();
                }else{
                    fragmentTransaction.add(R.id.myFrameLayout, fragment2);
                    fragmentTransaction.addToBackStack(null);
                    fragmentTransaction.commit();
                }
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    protected void onResume() {

        super.onResume();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        mFragmentManager.popBackStack();

    }

}
时间: 2024-08-05 11:09:59

android 中FragmentActivity中模拟返回键返回上一个Activity效果的相关文章

android webview点击返回键回到上一个html

android webview点击返回键返回上一个html 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { 4 mWebView.goBack();// 返回前一个页面 5 return true; 6 } 7 return super.onKeyDown(keyCod

Android开发:向下一个activity传递数据,返回数据给上一个activity

1.向下一个activity传递数据 activity1 1 Button button=(Button) findViewById(R.id.button1); 2 button.setOnClickListener(new OnClickListener() { 3 4 @Override 5 public void onClick(View v) { 6 Intent intent=new Intent("1111111111111111111"); 7 intent.addCa

启动一个新的activity并携带数据,返回数据给上一个activity

一.在启动一个新的activity的时候可以通过Intent携带数据,通过Intent.putExtra()方法通过键值对的形势装入数据.在新启动的activity中通过           getIntent()方法获取启动activity的Intent,并通过getxxxxExtra()获取传递的数据. 二.如果希望被启动的新activity返回数据,则需要使用startActivityForResult()启动新的activity,方法携带两个参数,第二个为请求码,用于返回时判断是由哪个a

android开发中,两个按下手机实体返回键,两个Activity反复来回跳转的问题

android开发中,对于用intent实现跳转的Ativity,有时候按下手机的返回键时,两个Activity之间会多次相互跳转,始终退出不了程序的情况.这是由于从Activity  A跳转到Activity  B时,A被压入Activity栈中:当从B返回时,默认又重新创建了一个Activity A对象,这样一来就有了多个Activity A对象.所以造成了无法退出情况. 解决办法是:在AndroidManifest.xml文件中找到Activity A项,在其属性中加入  android:

android中按back键返回上一个activity,如何重新调用上一个activity的oncreate方法?

默认情况下是不会调用的. @Override public void onBackPressed() { String titleStr = edittitle.getText().toString(); String contentStr = editcontent.getText().toString(); if (title.equals(titleStr) && content.equals(contentStr)) { super.onBackPressed(); } else

android webview点击返回键返回上一级activity

android webview点击返回键返回上一个activity 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 // TODO Auto-generated method stub 4 if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 5 return true; 6 } 7 return super

android获得上一个activity的返回值来设定当前按钮的可按性

每次想去转载别人的文章就不用自己写了,好想这样省事,但是路途就是那么的艰辛,每次看别人的博客然后自己做时会遇到各种各样的问题,人家的博客就那么几个步骤,然而我照着做时就会遇到奇葩问题,,哎,现在想起了曲婉婷的一首歌<没有什么不同>的歌词尽管痛的苦的没说的,但哪有一路走来都是顺风的,只要为了梦想不服输,再苦也不停止脚步.还是自己总结一下把!! 首先我为以前做都的项目的app新增加了个按钮,要求这个按钮在没获得上一个activity返回过来的值前不能按,这样我就找到了方法,就是使用startAct

返回数据给上一个活动

我们都知道,android开发中一个活动跳转时是可以带数据传递给下一个活动的,那么能不能够返回数据给上一个活动呢?答案是肯定的.不过不同的是,返回上一个活动只需要按一下Back键就可以了,并没有一个用于启动活动Intent来传递数据.通过查阅文档你会发现,Activity中还有一个startActivityForResult()方法也是用于启动活动的,但这个方法期望在活动销毁的时候能返回一个结果给上一个活动.毫无疑问,这就是我们所需要的. startActivityForResult()方法接收

Android官方入门文档[14]停止和重新启动一个Activity活动

Android官方入门文档[14]停止和重新启动一个Activity活动 Stopping and Restarting an Activity停止和重新启动一个Activity活动 This lesson teaches you to1.Stop Your Activity2.Start/Restart Your Activity You should also read?Activities 这节课教你1.停止您的Activity活动2.启动/重新启动您的Activity活动 你也应该阅读?