activity之间跳转

传递数据

  • 第一个Activity
   /**
    * 隐式跳转至第二个activity
    * 
    * @param v
    */
   public void click4(View v) {
       // 方式一可行 同在一个intent-filter下 
       Intent intent = new Intent();
       intent.setAction("com.example.activeswitch.second");
       intent.setDataAndType(Uri.parse("hello:123"), "text/username");
       startActivity(intent);
   }  
  • 第二个Activity
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent = getIntent();
        Uri uri = intent.getData(); // hello:123
        String type = intent.getType(); //  text/username
    }  

// 第一个Activity
public void click7(View v) {
        Intent intent = new Intent();
        intent.setAction("com.example.activeswitch.second");
        // 方式一
        intent.putExtra("username", "hello world");
        intent.putExtra("password", "android");
        // 方式二
        Bundle bundle = new Bundle();
        bundle.putString("username", "hello android");
        bundle.putString("password", "123");
        intent.putExtras(bundle);
        startActivity(intent);
    }  
//第二个Activity
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent = getIntent();
        
        //方式一
        /*String username = intent.getStringExtra("username");
        String password = intent.getStringExtra("password");*/
        
        
        //方式二
        Bundle bundle = intent.getExtras();
        String username = bundle.getString("username");
        String password = bundle.getString("password");
        
        System.out.println("username:" + username + " password:" + password);
    }  

应用场景

  • 显示意图: 启动同一个应用中Activity
  • 隐式意图: 启动不在同一个应用中的Activity
  • 在启动效率中,隐式效率远远低于显示意图
  • 如果系统中有多个Activity与意图设置的action匹配,那么在启动Activity时,会弹出一个对话框,里面包含所有匹配的Activity

你可能感兴趣的:(activity之间跳转)