美文网首页
Android跳转页面

Android跳转页面

作者: xiesen | 来源:发表于2019-07-13 20:22 被阅读0次

    Intent函数

    ​ 1.Intent 是指在相互独立的组件(如两个 Activity)之间提供运行时绑定功能的对象。
    ​ 2.Intent 表示一个应用“执行某项操作的意向”。
    ​ 3.Intent intent = new Intent(this, NameActivity.class)。

    startActivity(intent);

    ​ startActivity() 函数将启动 Intent 指定的 NameActivity 实例.

    需要返回至原先页面

    AndroidManifest.xml 中添加必需的 <activity> 元素

    案例:

    <activity
       android:name=".LoginPage"
       android:parentActivityName=".MainActivity">
       <!-- The meta-data tag is required if you support API level 15 and lower -->
       <meta-data
       android:name="android.support.aaa"
       android:value=".MainActivity" />
    </activity>
    

    传值以及接值

    方法很多,现在只写两种

    第一种:

    发送方:

    Intent intent = new Intent();
    intent.putExtra("name", "诸葛亮");
    intent.putExtra("age", 50);
    intent.putExtra("IQ", 200.0f);
    intent.setClass(MainActivity.this, SecondActivity.class);
    MainActivity.this.startActivity(intent);
    

    接受方:

    Intent intent = getIntent();
    String name = intent.getStringExtra("name");
    int age = intent.getIntExtra("age", 0);
    float IQ = intent.getFloatExtra("IQ", 0.0f);
    textview2.setText("name:"+name+",age:"+age+",IQ:"+IQ);
    

    第二种:

    对象类要实现Parclelable接口

    发送方:

    Intent intent = new Intent();
    Person person = new Person("孙悟空",500,55.6f);
    intent.putExtra("person", person);
    intent.setClass(MainActivity.this, SecondActivity.class);
    startActivity(intent);
    

    接受方:

    Intent intent = getIntent();
    Person person = intent.getParcelableExtra("person");
    textview = (TextView) findViewById(R.id.textview);
    textview.setText(person.toString());
    

    对象类:

    public class Person implements Parcelable {
        private String name;
        private int age;
        private float weight;
    
        ....
    }
    

    fragment到Activity

    由于fragment可以使用 getActivity() 访问Activity实例,所以这一步实现很简单。

    intent=new Intent(getActivity(), UserLoginActivity.class);
    startActivity(intent);
    

    fragment到fragment

    1.在相应fragment全局中声明fragment管理对象及事务对象。

    // Fragment管理对象
        private FragmentManager manager;
        private FragmentTransaction ft;
    

    2.在OnCreate方法中初始化fragment管理对象

    @Override
        public void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            manager = getFragmentManager();
        }
    

    3.从 FragmentManager 获得一个FragmentTransaction实例

    MyJDEditFragment myJDEditFragment = new MyJDEditFragment();
    ft = manager.beginTransaction();
    //当前的fragment会被myJDEditFragment替换
    ft.replace(R.id.realtabcontent, myJDEditFragment);
    ft.addToBackStack(null);
    ft.commit();
    
    
    //简略写法
       FragmentManager FM = getSupportFragmentManager();
       FM.beginTransaction().replace(R.id.main_FrameLayout, fm1).commit();
    

    那么如何在fragment切换的时候还可以传递参数呢?

    我们可以使用setArguments()方法绑定一个bundle对象传递到另外一个fragment中。

    myJDEditFragment.setArguments(bundle);
    

    在另外一个fragment中(myJDEditFragment)使用getArguments()可以拿到bundle对象。

    相关文章

      网友评论

          本文标题:Android跳转页面

          本文链接:https://www.haomeiwen.com/subject/lyomkctx.html