如何在Android Studio中的3个或更多活动之间传递数据?

如何在Android Studio中的3个或更多活动之间传递数据?,android,android-studio,android-intent,Android,Android Studio,Android Intent,我正在尝试创建一个项目,在MainActivity上获取您的电话号码,并将其传递给VerifyPhone activity,后者会将身份验证码发送到您的手机 我只能将电话号码值从MainActivity传递到VerifyPhone activity,但无法将其传递到字符串值以传递到我的第三个activity 我想做的是: 主要活动信息通道: String complete_phone_num = "+" + phone_num; Intent intent = new I

我正在尝试创建一个项目,在MainActivity上获取您的电话号码,并将其传递给VerifyPhone activity,后者会将身份验证码发送到您的手机

我只能将电话号码值从MainActivity传递到VerifyPhone activity,但无法将其传递到字符串值以传递到我的第三个activity

我想做的是:

主要活动信息通道:

String complete_phone_num = "+" + phone_num;
            Intent intent = new Intent(MainActivity.this, VerifyPhoneActivity.class);
            intent.putExtra("phonenumber", complete_phone_num);
            startActivity(intent);
验证电话活动:

    Bundle bundle = getIntent().getExtras();
    String phonenumber = bundle.getString("phonenumber");
然后我尝试将
phonenumber
传递到
ProfileActivity

 Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        intent.putExtra("phoneNum", phonenumber);
                        startActivity(intent);
不幸的是,它无法识别OnCreate之外的变量
phonenumber

我希望将电话号码传递给其他活动,以便我可以将其存储在我的数据库中,并将其用于报表,以便对其进行组织

intent.putExtra("phoneNum", phonenumber);
确保您没有输入错误并且正在ProfileActivity中检查“phoneNum”

如果不是,您所说的OnCreate之外是什么意思?是否尝试将其作为成员变量访问?在这种情况下,您应该等待ProfileActivity中的OnCreate使用您在VerifyPhone中已经使用的方法首先完成设置值

确保您没有输入错误并且正在ProfileActivity中检查“phoneNum”

如果不是,您所说的OnCreate之外是什么意思?是否尝试将其作为成员变量访问?在这种情况下,您应该等待ProfileActivity中的OnCreate使用您在VerifyPhone中已经使用的方法首先完成设置值

不幸的是,它无法识别OnCreate之外的变量phonenumber

您需要将
phonenumber
声明为活动的私有字段。我建议您学习Java类中的实例字段

不幸的是,它无法识别OnCreate之外的变量phonenumber


您需要将
phonenumber
声明为活动的私有字段。我建议您学习Java类中的实例字段。

我相信您正在尝试创建新的intent,并在oncreate Method之外启动它,但您在其中声明变量phonenumber,因此无法在其范围之外访问它,请尝试将其声明为activity类的私有字段,并在oncreate()中初始化它方法,然后您就可以使用它了。

我相信您正在尝试创建新的intent,并在oncreate method之外启动它,但您在其中声明变量phonenumber,因此无法在其范围之外访问它,请尝试将其声明为activity类的私有字段,并在oncreate()方法中初始化它,然后你就可以使用它了。

正如@Code学徒所说。我还认为您需要在方法之外添加一个变量,并为这个变量设置额外的值

大概是这样的:

String phonenumber = "";

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
phonenumber = bundle.getString("phonenumber");

public void someOtherMethod(){
Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    intent.putExtra("phoneNum", phonenumber);
                    startActivity(intent);
}

另一个解决方案是将字符串作为参数传递给特定的方法。

正如@Code peedient所说。我还认为您需要在方法之外添加一个变量,并为这个变量设置额外的值

大概是这样的:

String phonenumber = "";

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
phonenumber = bundle.getString("phonenumber");

public void someOtherMethod(){
Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    intent.putExtra("phoneNum", phonenumber);
                    startActivity(intent);
}

另一个解决方案是将字符串作为参数传递给特定的方法。

是的,我已经检查过了,情况并非如此。正如我所说:不幸的是,它无法识别OnCreate之外的可变电话号码。我的答案的第二部分呢?是否要在onCreate()之前访问它?因为只有在OnCreate中/之后才能检索和使用该值,所以我可以在OnCreate之外的第二个活动中声明“phonenumber”吗?如果是,怎么做?因为它导致了我的应用程序崩溃。只需在类ProfileActivity{String phonenumber;onCreate(){}中将其声明为变量,然后在使用它之前检查phonenumber==null,并在oncreateYeah中使用getIntent设置值。我已经检查过了,情况并非如此。正如我所说:不幸的是,它无法识别OnCreate之外的可变电话号码。我的答案的第二部分呢?是否要在onCreate()之前访问它?因为只有在OnCreate中/之后才能检索和使用该值,所以我可以在OnCreate之外的第二个活动中声明“phonenumber”吗?如果是,怎么做?因为它导致了我的应用程序崩溃。只需在类ProfileActivity{String phonenumber;onCreate(){}中声明它为变量,然后在使用它之前检查phonenumber==null,并在onCreate中使用getIntent设置值。我只是把它作为高中最后一年的项目来做,我只需要基本的理解,如果你能给我解释一下,我会非常感谢你。@Ada我已经给了你谷歌可以使用的术语,让你从Java或Android教程中获得基本的理解。我只是作为高中最后一年的项目来做,我只需要基本的理解,如果您能给我解释一下,我将不胜感激。@Ada我已经给了您一些术语,您可以通过谷歌从Java或Android教程中获得基本的理解。不,我在OnCreate方法中声明VerifyPhone活动(第二个)的电话号码,并试图将电话号码传递给ProfileActivity(第三个)我相信Madonabulia所说的很可能是正确的Ada,您很可能有一个范围问题,您的第三个活动不知道您的变量。所以我会按照他的建议,尝试在onCreate方法之外声明变量,然后在onCreate方法中填充变量,第三个方法应该可以访问它。不,我在VerifyPhone活动中声明电话号码(第二个)在OnCreate方法中,尝试将phonenumber传递给ProfileActivity(第三个),我相信Madonabulia所说的很可能是正确的Ada,您很可能存在范围问题,您的第三个活动不知道您的变量。所以我会按照他的建议,尝试在onCreate方法之外声明变量,然后在onCreate方法中填充变量,第三个方法应该可以访问它