在进行活动2时直接将数据从活动1传递到活动3,但不应将数据传递给活动2

时间:2016-09-13 05:09:33

标签: android android-intent

我有三个活动A,B和C.我需要将一些数据从活动A传递给活动C.但导航是从A到B到C,即我不能直接从活动A转到活动C.我不想将我的数据从A传递给活动B,我不想使用任何外部存储,如sqlite或共享首选项。可以通过意图来完成吗?如果有,怎么样?如果不是,还有其他方法吗?

5 个答案:

答案 0 :(得分:0)

使用Interface与其他Activity进行通信。

或者您可以在Activity1上创建变量sendkeys()

答案 1 :(得分:0)

有多种方法可以将数据从一个活动发送到其他活动,

现在因为你不能使用intent所以我建议你使用Application类或创建一个Global单例类来保存你的数据。

请参阅以下链接 https://androidresearch.wordpress.com/2012/03/22/defining-global-variables-in-android/

以下是创建应用程序类的步骤: 第1步:创建任何类并使用Application类扩展它:

public class Globals extends Application{
   private int data=200;

   public int getData(){
     return this.data;
   }

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

步骤2:在清单文件中定义应用程序类:

<application
   android:name=".Globals"
   .... />

步骤3:现在通过在您获得应用程序类的任何活动中调用getApplication()。只需对其进行类型转换并调用所需的方法。

Globals g = (Globals)getApplication();
int data=g.getData();

我希望这会有所帮助。

答案 2 :(得分:0)

问题是你的第三个活动无法知道发送捆绑包的活动。您需要添加一个字段来标识此类型的捆绑包,以便您可以相应地进行处理。例如,在活动1中:

Intent i = new Intent(ActivityOne.this, ActivityTwo.class);
    i.putExtra("activity", (int)1);
    i.putExtra("key", value);
    startActivity(i);

然后在第3次活动中:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) { 
   int typeAct = extras.getInt("activity");
   if (typeAct == 1) {
//do something with data
   }

答案 3 :(得分:0)

制作一个界面:

public interface PassData {
public void data(String data);
}

如果要将数据从活动A传递到活动C,则: 从活动A你需要传递这样的数据:然后在活动A。

PassData passData;// make it global variable
passData.data("Your DATA WHICH YOU WANT TO SEND TO ACTIVITY C");

在活动C中:

ActivityC extends AppCompatActivity implements PassData{
//onCreate Stuff

 @Override
    public void data(String data) {
  // print this data and see it's coming or not

}

答案 4 :(得分:-1)

是的确定。 例如在你的活动中

class ActivityA extend Activity{
    public static String abc = "hello";

}

in ActivityC

ActivityC extend Activity{

    onCreate(){
        String a = ActivityA.abc;
        Log.d("test",a);
    }
}