用接口实现,在非跳转情况下,一个界面向Activity传数据

本文介绍了如何在不进行页面跳转的场景下,使用接口从一个界面(如Activity或Dialog)向Activity传递数据,详细讲解了具体实现步骤和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用接口实现,在非跳转情况下,一个界面(Activity或dialog等皆可)向Activity传数据。看效果:

如有手懒的朋友,可直接到我的资源页下载(0积分):
http://download.youkuaiyun.com/detail/qq_29614465/9640189,是Android studio版本,有用eclipse的朋友只要用关键代码即可。

1.MainActivity

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
    Button btn1;
    TextView tv_second;//第二个界面值过来的值
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = (Button) findViewById(R.id.button_first);
        tv_second = (TextView) findViewById(R.id.tv_second);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }
        });
    }
    @Override
    protected void onResume() {
        super.onResume();
        SecondActivity.InputPsdDialogListener inputDialogListener = new SecondActivity.InputPsdDialogListener() {
            @Override
            public void onOK(String text) {
                Log.d("结果是什么呢", "onCreate() returned: " + text);
                tv_second.setText("传过来的是:" + text);
            }
        };
        SecondActivity sec = new SecondActivity();
        sec.setListener(inputDialogListener);    //开启这个接口
    }
}
2.SecondActivity

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SecondActivity extends Activity {
    Button btn2;
    EditText editText;
    private static InputPsdDialogListener mDialogListener;
    public interface InputPsdDialogListener {       //创建这个接口
        void onOK(String text);        //创建一个方法,其中的text就是要传递的参数,你要传什么数据,方法你自定义一下。
    }
    public void setListener(InputPsdDialogListener inputDialogListener) {
        this.mDialogListener = inputDialogListener;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btn2 = (Button) findViewById(R.id.button_second);
        editText = (EditText) findViewById(R.id.edit_info);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
                mDialogListener.onOK(editText.getText().toString());
            }
        });
    }
}
3.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"  tools:context=".MainActivity">
    <TextView android:text="我是第一个界面"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:textColor="#000000"
        android:layout_marginTop="20dp"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点点我进入下一个界面"
        android:id="@+id/button_first"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
    <TextView
        android:id="@+id/tv_second"
        android:text="一会儿能看到第二个界面传过来的值"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:textSize="20sp"
        android:textColor="@android:color/holo_blue_dark"
        android:layout_marginBottom="50dp"/>
</RelativeLayout>
4.activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="qiwei.shiyang.SecondActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="第二个界面"
        android:textColor="#000000"
        android:textSize="30sp" />
    <EditText
        android:id="@+id/edit_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="70dp"
        android:hint="输入点想传的信息"
        android:textSize="20sp" />
    <Button
        android:id="@+id/button_second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="输入完点我能回去" />
</RelativeLayout>
如有手懒的朋友,可直接到我的资源页下载(0积分):
http://download.youkuaiyun.com/detail/qq_29614465/9640189,是Android studio版本,有用eclipse的朋友只要用关键代码即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值