如何从其他活动访问数据?

时间:2016-02-20 09:36:21

标签: java android variables android-activity

我有两项活动。一个是主要活动,另一个是设置活动。在设置活动中,我正在设置颜色变量。

我希望在主要活动中访问默认颜色,该颜色在设置活动中设置。

我尝试将color声明为静态变量,并在另一个活动中访问它。但问题是如果我直接打开主要活动我没有得到颜色,因为它没有在设置活动中设置。

如何在设置活动中保存此变量?我想将颜色保存为设置活动中事件的默认值。

谢谢。

编辑:

我使用共享首选项尝试了这一点,但仍然没有在主要活动中获得默认颜色。

在设置中:

 ((GradientDrawable)selectColor.getBackground()).setColor(Color.BLUE);
    mColor = Color.BLUE;

    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putInt("color",mColor);
    editor.commit(); 

在主要活动中:

    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
    mColor = sharedPref.getInt("color",0);

3 个答案:

答案 0 :(得分:3)

由于您是通过设置活动说的,我假设您有多个设置,并且您希望它们是粘性的(您希望在将来运行应用时记住它们)?如果是这样,请使用共享首选项来存储您想要的颜色,并在主活动的onResume中读取首选项并相应地更改颜色。

如果您不希望它们变粘,请调用startActivityForResult以启动设置活动,并返回设置作为结果。然后主活动应覆盖onActivityResult以获得结果。

答案 1 :(得分:0)

在共享首选项

中保存颜色十六进制代码或颜色名称

答案 2 :(得分:0)

你有两个选择:

1-正如Gabe Sechan所说,你应该使用startActivityForResult

 startActivityForResult(intent, 2);// Activity is started with requestCode 2  


@Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  {  
             super.onActivityResult(requestCode, resultCode, data);  
              // check if the request code is same as what is passed  here it is 2  
               if(requestCode==2)  {  
                  String message=data.getStringExtra("MESSAGE");   
                   textView1.setText(message);  
                }  
 }  

2-更改颜色时,可以使用Callback方法处理侦听器。

他们两个也和我一起工作。