十二.Activity配置与通讯

1.Activity配置



    

          //activity:我们是用activity进行说明主键
            
                  //name:activity所对应的类名,action:逻辑动作名,
                  //category:是一个类别
            
        

        
        

        
            
                
                
                
                
            
        

        
            

                
                
            
        
    


package com.example.activityforcommunication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /**
     * 启动SecondActivityActivity
     * @param view
     */
    public void starSecondActivity(View view){
        Intent intent=new Intent();
        //直接说明所要启动的Activity是哪个
        intent.setClass(this,SecondActivity.class);
        //启动
        startActivity(intent);
    }

    /**
     *启动ThreeActivity,隐式Intent
     * @param view
     */
    public void starThreeActivity(View view){
        Intent intent=new Intent();
        //设置一个逻辑动作名
        intent.setAction("guobaoyou.action.three");
        //添加类别
        intent.addCategory("guobaorou.cetegory.test");
        startActivity(intent);
    }
}

2.Activity间的通讯
Intent

 /**
     *  调用系统已在的页面
     * @param view
     */
    public void startSystemActivity(View view){
        Intent intent=new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("content://contacts/people/1"));  //调用系统中已经存在的电话号为1的联系人
        startActivity(intent);
    }
}

Activity的启动方式
①startActivite
②startActiviteForResult
Activity的传值方式
①通过intent中的putExtra方法传值到另一个组件,intent.putExtra(key,value);

protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //取得传递的值
        Intent intent=getIntent();

        String hellow=intent.getStringExtra("hello");  //通过getExtra方法得到所传的值

        TextView tv=new TextView(this);
        tv.setText(hellow);
        tv.setTextSize(40);
        tv.setTextColor(Color.RED);

        setContentView(tv);
    }
        Intent intent=new Intent();
        //设置一个逻辑动作名
        intent.setAction("guobaoyou.action.three");
        //添加类别
        intent.addCategory("guobaorou.cetegory.test");
        //传值到另一个组件
        intent.putExtra("hello","你好");
        startActivity(intent);
    }

②另一个组件通过方法getIntent()得到Intent,通过getExtras方法得到所传的对象,intent.putExtras(Bundle)

Bundle bundle=new Bundle();
       bundle.putString("hello","hello word");
       bundle.putInt("test",10);
       intent.putExtras(bundle);
       startActivity(intent);
 Bundle bundle=intent.getExtras();
        String hello=bundle.getString("hello");
        int test=bundle.getInt("test");
        TextView tv=new TextView(this);
        tv.setText(hello+","+test);

Activity返回值
①使用strartActivityForResult()启动一个Activity
②重写onActivityForResult()方法接受返回
③在启动的Activity中,调用方法setResult()设置需要返回值的内容

你可能感兴趣的:(十二.Activity配置与通讯)