欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android使用Intent传输数据

程序员文章站 2022-04-24 22:35:37
...
  1. 向下传输数据

利用Intent向下传输数据,从activity_main.xml中接收数据封装进Intent对象中,在activity_main2.xml中将数据输出。

  • First_Activity
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       text1 = findViewById(R.id.text1);
       btn_1 = findViewById(R.id.but_1);
       btn_1.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               String data = text1.getText().toString();    
                 //获得文本框中的数据
               Log.d(TAG,data);      //进行打印验证
               Intent intent = new Intent(MainActivity.this,Main2Activity.class);
               intent.putExtra("data_key",data);   
                 //通过putExtra()方法向下传输数据
               startActivity(intent);      
                      //使用Intent向下传输数据
           }
       });
   }
  • Second_Activity
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Intent intent = getIntent();    
        //接收从First_Activity中传输的数据
        String data = intent.getStringExtra("data_key"); 
            //获得intent对象中的数据
        text2 = findViewById(R.id.text2);     
        text2.setText(data);   
         //将数据设置在文本中
}
  • 返回数据给上一个活动(当活动被销毁时)

在Android中本身的Back键就可以实现对上一个活动数据的返回,但是当活动被销毁后,就需要通过startAcitivityForResult()方法来实现。

  • Activit_First
public  class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private Button btn_1;
    private EditText text1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_1 = findViewById(R.id.but_1);
        btn_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivityForResult(intent,1);   
                 //通过startAcitivityForResult方法来启动Activit_Second活动,传入的参数为1
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        text1 = findViewById(R.id.text1);
        switch(requestCode){
            case 1:    
             //此处的参数1要与启动活动Activity_Second时传入的参数一致
                if(resultCode == RESULT_OK){    
                 //确认请求码是否与请求码一致,判断数据的来源
                    String data1 = data.getStringExtra("data_return"); 
                    text1.setText(data1);
                }
                break;
        }
    }
}
  • Activity_Second
public class Main2Activity extends AppCompatActivity {
    private static final String TAG = "Main2Activity";
    private EditText text2;
    private Button btn_2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        text2 = findViewById(R.id.text2);
        btn_2 = findViewById(R.id.btn_2);
        btn_2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data1 = text2.getText().toString();
                Intent intent = new Intent();
                intent.putExtra("data_return",data1);     
                //通过intent对象拿到活动中的数据
                setResult(RESULT_OK,intent);    
                  //该方法专门用于向上一个活动传递数据.RESULT_OK是请求码
                finish();    //销毁当前活动
            }
        });
    }
}