当前位置: 首页 > 知识库问答 >
问题:

如何在Android上的多个活动之间传回价值

陆仲渊
2023-03-14

我正在尝试使用从Activity3检索到Activity1的值。这是我的流程:

活动1调用活动2→ Activity2.finish(),调用Activity3→ 活动3.doSomethingAndGetValue()→ 活动3.finish()→ 活动1.useDoSomethingAndGetValue();

我找不到将值从Activity3发送回Activity1的方法;即使使用start ActivityForResult(),因为那时Activity2已经被销毁了。

我尝试使用一个可序列化的接口并将其作为意图上的额外值传递,但此解决方案仅适用于传递的对象是静态的,它不允许我对活动1上的当前成员变量进行任何更改。

此外,我尝试了所有这些选项,但都没有成功:

https://stackoverflow.com/a/17306696/3217203

(我不允许为此使用共享首选项)

有人知道吗?

注意:我不能添加eventBus,我知道会很棒,而且更容易,但是架构不允许我。

共有3个答案

盖锦程
2023-03-14

可以使用setter和getter pojo类

设置活动3中的值并在活动1中使用它们。

public class MyPojo   {
   private static String value;
   public static String   getValue() {
    return value; 
       }
     public static void setValue(String value) 
     { 
           MyPojo.value = value; 
      }
 } 

在活动3中,

MyPojo。setValue(“这是activity3”);

然后在活动1中,

MyPojo.get值();

公良云
2023-03-14

如果您的数据要求仅限于您描述中的三项活动,我建议您在进入活动3之前不要完成活动2。相反,请使用活动。从activity3返回activity2时,调用finish(),然后返回activity1。

如果上述解决方案不可接受,请尝试以下2种方法:

(1) 您可以在应用程序上下文中使用变量。为此,首先创建一个应用程序类,比如MyApp。Java语言

public class MyApp extends Application {

private String data;

public String getData() {
       return data;
   }

   public void setData(String data) {
        this.data = data;
   }
}

现在,将这个类添加为清单中应用程序标签的android: name

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tony.myapp">

<application
    android:name=".MyApp"
    .....>

在活动3中,

String data = "I am BATMAN!!";
MyApp myApp = (MyApp) getApplicationContext();
myApp.setData(data);

然后,在活动1中你需要做的就是,

MyApp myApp = (MyApp) getApplicationContext();
String data = myApp.getData();

(2) 如果您想要持久化应用程序的不同实例的简单键值对,请使用SharedReferences。

诸葛彦
2023-03-14

在启动活动2和3时,您可能希望使用intent标志flag\u ACTIVITY\u FORWARD\u结果,如intent中所述。

代码

Activity 1 -> startActivityForResult(activityB,0);
Activity 2 -> activityCintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityCintent); finish();
Activity 3 -> setresult(10); finish();
Activity 1 -> if(result==10) {dofunction(); } 

这是FLAG_ACTIVITY_FORWARD_RESULT的逻辑。首先,您为结果启动一个活动,新活动将此意图发送到另一个新活动,直到您设置结果。

 类似资料:
  • 我有两个活动,它们应该使用意图相互传递数据。我不确定在哪里放置一些看跌期权和看跌期权。 对于Activity1(MainActivity),我有一个按钮,按下它会创建一个意向,然后将其放入Activity2,然后使用startActivity(意向)启动它。 然后在Activity2中,我使用getIntent在onCreate()函数中获取该信息。 现在我想做的是在Activity2中有一个按钮

  • 我有两项活动。两者都已实现surfaceview。在第一个活动中,我有一个名为score1的变量,我想将score1中的值传递给第二个活动。 每次我运行应用程序时,它在完成第一个活动后崩溃,并尝试加载第二个活动。在我编写代码以获取第二个活动中的额外意图之前,一切都很好。 我的第一个活动有这样的意图: 在我的第二个活动中,以下代码试图获取score1变量的值: 我不明白为什么每次activity o

  • 我想在按下按钮时将一个活动中编辑文本的值传递给另一个活动,并在我的代码中使用该值。然而,在这些活动之间还有一个活动,我不想在其中使用该值 我的活动1包括: 用户从Activity1转到Activity2 活动2 用户从Activity2转到Activity3 活动3 在这里,我想将该值用作字符串。

  • 我有一个关于Android动画的问题。我做了一个应用程序,其中有很多产品,你可以切换产品现在通过滑动屏幕左右(到下一个产品在列表),但它只是加载像任何其他活动现在。 我的产品就是活动,现在是这样切换的:

  • 我试图将一个活动(LensActivity)中的ArrayList中的值传递给我的主活动上的TextView。在这个网站上,我找到了Intent方法并进行了实验,但似乎无法传递它,信息被提取到字符串lensString中,并传递到Intent,但在主活动中似乎没有传递或获取TextView,在一些实验中,由于getIntent在主活动中,我得到了一个空指针。 这是LensActivity的代码,它

  • 问题内容: 我的结构是这样的: 而结构是: 我主要尝试这样做: 是否可以在模板内部执行类似的操作? 问题答案: 引用的文档,该操作的语法: 这意味着您可以将一个可选数据传递给模板执行,而不是更多。如果要传递多个值,则必须将它们包装为传递的某个单个值。 因此,我们应该将这些数据包装到struct或map中。但是我们不能在模板中编写Go代码。我们可能要做的是注册一个函数,将这些数据传递给该函数,该函数