关闭

Intent实现跳转

272人阅读 评论(0) 收藏 举报
分类:

1.注意事项:因为手机屏幕发生旋转就会导致onCreate()方法重新加载,这就导致之前textView控件的数据重新加载,导致原有输入的数据的丢失,如下:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.main_tv);
        textView.setOnClickListener(this);
        if (savedInstanceState != null){//
            CharSequence chars = savedInstanceState.getCharSequence("textView");
            textView.setText(chars);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {//实现该方法解决上述问题,当手机屏幕发生反转时,“点击”也不会变成“<span style="font-family: Arial, Helvetica, sans-serif;">hello World!</span>”
        super.onSaveInstanceState(outState);
        outState.putCharSequence("textView",textView.getText());
    }

    @Override
    public void onClick(View v) {
        ((TextView) v).setText("点击");
    }

2.onNewIntent()方法的功能

在SeconedActivity的android:launchMode="singleTask"模式下,通过intent实现MainActivity------->SeconedActivity------->MainActivity------->SenconedActivity的连续跳转,第一次MainActivity------->SeconedActivity时EditText控件的输入的数据为“123”,跳转到SeconedActivity是textView控件显示的为“123”,第二次MainActivity------->SeconedActivity时EditText控件的输入的数据为“456”,跳转到SeconedActivity是textView控件仍然显示的为“123”,这时因为SecondActivity被重新初始化了。当调用onNewIntent()方法时,这时第二次跳转的时候就会textView控件就会显示“456”了。实例如下:

 <activity
            android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SeconedActivity" android:launchMode="singleTask"></activity>//设置为singleTask

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView textView;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.main_tv);
       editText = (EditText) findViewById(R.id.main_edit);
        textView.setOnClickListener(this);
//        if (savedInstanceState != null){
//            CharSequence chars = savedInstanceState.getCharSequence("textView");
//            textView.setText(chars);
//        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putCharSequence("textView",textView.getText());
    }

    @Override
    public void onClick(View v) {
       // ((TextView) v).setText("点了一下");
        Intent intent = new Intent(this, SeconedActivity.class);
        intent.putExtra("edit",editText.getText());
        startActivity(intent);
    }
}

public class SeconedActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_seconed);
        textView = (TextView) findViewById(R.id.main_sec);
        textView.setOnClickListener(this);
        CharSequence chars = getIntent().getCharSequenceExtra("edit");
        textView.setText(chars);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        CharSequence edit = intent.getCharSequenceExtra("edit");
        textView.setText(edit);
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(SeconedActivity.this, MainActivity.class);
        startActivity(intent);
    }
}

3.ActivityOptionCompat

public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    private static final String TAG = MainActivity.class.getSimpleName();
    private TextView textView;
    private EditText edit;

    /*
    * 可以有构造函数,但是不能有参数。在activity中不要定义是静态属性(static)类型。
    * 依赖于类所存在的
    * */
    public MainActivity() {
        Log.d(TAG, "MainActivity: ");
    }

    /*
        * 创建
        *
        * */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.main_tv);
         edit = (EditText) findViewById(R.id.main_edit);
        textView.setOnClickListener(this);

        if (savedInstanceState != null) {
            CharSequence charSequence = savedInstanceState.getCharSequence("TextView");
            textView.setText(charSequence);
        }
    }
    /*
    * 进入可见状态
    *
    * */
    @Override
    protected void onStart() {
        super.onStart();
    }
    /*
    * 进入可点击状态
    *
    * */
    @Override
    protected void onResume() {
        super.onResume();
    }
    /*
    * 失去焦点
    *
    * */
    @Override
    protected void onPause() {
        super.onPause();
    }
    /*
    * 销毁
    * */
    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    /*
    * 从后台唤醒
    * */
    @Override
    protected void onRestart() {
        super.onRestart();
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }
    /*
    * 系统保护
    *防止屏幕发生翻转导致textView里边的数据丢失
    * */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putCharSequence("textView",textView.getText());
    }

    @Override
    public void onClick(View v) {
        ((TextView) v).setText("已点击");
        //显式启动
        Intent intent = new Intent(this, OtherActivity.class);
        intent.putExtra("textView",edit.getText());
        /*
        * makeScaleUpAnimation这种方式个人感觉用途还是很广的,
        * 效果就是不断的放大一个view,进而进行activity的过度。
        *说明下几个参数,第1个参数是scale哪个view的大小,
        * 第2和3个参数是以view为基点,从哪开始动画,
        * 这里是该view的中心,4和5参数是新的activity从多大开始放大,
        * 这里是从无到有的过程。
        * */
        ActivityOptionsCompat compat = ActivityOptionsCompat.makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);
        ActivityCompat.startActivity(this,intent,compat.toBundle());//v4兼容包,api4以上的(硬件不支持除外)
        //startActivity(intent);
        //隐式启动
//        Intent intent = new Intent(Intent.ACTION_MAIN);
//        intent.addCategory(Intent.CATEGORY_LAUNCHER);
//        startActivity(intent);
        //自定义隐式启动
//        Intent intent = new Intent("com.example.wwj.activitydemo.OTHER");
//        intent.addCategory("com.example.wwj.activitydemo.OtherCategory");
       // startActivity(intent);
 //       Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel;12345"));
//        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//设置一个新栈
//        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);//
      //  startActivity(intent);

    }
}


0
0
查看评论

Intent 实现活动之间的跳转

转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/53558324 步骤: 1、新建要跳转的活动和布局文件 2、在AndroidManifest中实现注册 3、要跳转的活动中实现跳转 新建的活动和布局 package com...
  • Mr_Leixiansheng
  • Mr_Leixiansheng
  • 2016-12-10 14:39
  • 747

Android使用Intent实现Activity之间的跳转

出处:www.csdn.net              中文的意思是意图,目的的意思。        ...
  • zhengliusu
  • zhengliusu
  • 2012-01-05 10:31
  • 27279

Android使用intent跳转到其它应用activity界面

一、跳转到其它界面。 一、跳转到其它界面。 1、使用包名和类名直接启动,前提是知道这两个。 1.1、启动主activity Intent intent=new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCH...
  • hn_lgc
  • hn_lgc
  • 2016-07-09 23:54
  • 7759

android跳转到另一个Activity三种方法

记性不好的妹纸萌,只能靠学习记录整理了。 一个Intent对象,用于携带将跳转至下一个界面中使用的数据,使用putExtra(key,values)方法,此处存储的数据类型特别多,常用类型都支持。 方法一、 显式启动 Intent内部直接声明要启动的activity所对应的c...
  • jiayu0855
  • jiayu0855
  • 2017-12-09 15:29
  • 464

Intent 各种跳转

现在开发中的功能需要直接跳转到拨号、联系人、短信界面等等,查找了很多资料,自己整理了一下。 首先,我们先看拨号界面,代码如下: [java] view plaincopyprint? Intent intent =new Intent(...
  • wl455624651
  • wl455624651
  • 2012-09-04 17:59
  • 14686

使用Intent实现Activity之间传值与跳转

<br />      在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity,如何在多个Activity之间进行跳转和传值呢?我们可以通过 Intent 对象来实现上面所述的功能。本例通...
  • cjjky
  • cjjky
  • 2011-04-21 01:06
  • 30368

Android7.0系统使用Intent跳转到APK安装页

前言昨天在开发的时候遇到这样一个问题,在APP中更新版本下载完最新的apk之后没有跳转到应用安装页面。然后我换了个手机又进行测试了一下是可以的,这就怪了。我的代码是这样写的: /** * @param file * @return * @Description 安...
  • sinat_14849739
  • sinat_14849739
  • 2017-03-25 02:12
  • 2902

android学习之路-使用Intent跳转

Intent:显式跳转与隐式跳转
  • qq_26239671
  • qq_26239671
  • 2016-06-03 18:30
  • 306

使用Intent实现页面跳转

Intent可以理解为信使(意图) 由Intent来协助完成Android各个组件之间的通信。  Intent实现页面之间的跳转有两种方式 1、 startActivity(intent) 2、 startActivityForResult(intent,req...
  • u011740475
  • u011740475
  • 2014-09-22 08:54
  • 2118

Activity 跳转全解 android-Intent (带参数&不带参数的跳转)

(1)普通跳转 (startActivity) 方法1 和2 和3: 1. intent=new Intent(MainActivity.this,FristActivity.class);startActivity(intent); 2. startActivity(new ...
  • gjy211
  • gjy211
  • 2016-03-10 16:15
  • 1502
    个人资料
    • 访问:35699次
    • 积分:982
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:8篇
    • 译文:18篇
    • 评论:2条
    文章分类
    最新评论