2013-06-24 62 views
0

我有两个活动,主活动和另一个活动充当第一个活动的设置位置。例如,我有一个开关,希望将主要活动的布局设置为setVisibility(View.INVISIBLE)setVisibility(View.VISIBLE)从另一个活动中引用和更改活动元素

我的问题是,当我尝试引用l5(主活动中的布局名称)时,它无法识别它。我在主要活动中将其设置为公开,是不是它如何工作?如果它是公开的,它可以用于其他活动。

这只是一个例子,我想在那里做更多的设置,比如设置导航抽屉的alpha或者在主要活动中改变EditTexts的字体大小。

那么,我如何设置一个活动,可以改变从另一个活动的东西?

回答

1

数据共享同一个应用程序的活动之间在Android示例:

public class OptionsActivity extends Activity { 

SharedPreferences _settings; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.options); 

    // We need an Editor object to make preference changes. 
    // All objects are from android.context.Context 
    _settings = getSharedPreferences(STATIC_PROPERTY.PREFS_NAME, 0); 

    Spinner spBackground = (Spinner) findViewById(R.id.backgroundsThemeSelect); 

    spBackground.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, 
       long id) { 
      SharedPreferences.Editor editor = _settings.edit(); 

      int backgroundID = 0; 
      switch (pos){ 
       default: 
       case 0: 
        backgroundID = R.drawable.grass; 
        break; 
       case 1: 
        backgroundID = R.drawable.earth; 
        break; 
       case 2: 
        backgroundID = R.drawable.water; 
        break; 
      } 
      editor.putInt("background", backgroundID); 

      // Commit the edits! 
      editor.commit();     
     } 
    }); 
.... 
} 

然后在活动或后台代码要占用此设置:

public class ConsumerViewExtends View实现GameListener {0} {0} public static final String PREFS_NAME =“PrefsFile”;

public ConsumerView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, 0); 
      int backgroundID = settings.getInt("background", R.drawable.water); 
      setBackgroundDrawable(_appResources.getDrawable(backgroundID)); 
      .... 
} 
    .... 
} 

希望这有助于:)

+0

谢谢,刚才我正在看一些共享首选项的教程,heh.Thanks,你的例子可以帮助我更好地理解它的工作原理!祝你今天愉快 ! –

+0

任何时候都没问题:) – CarlosB

0

不,这不是它是如何工作的:) 在android中,活动表示屏幕。他们确实可以直接访问每个其他成员。你可以做的就是在屏幕之间传递“Itents”(它携带你需要的任何信息)或者拥有某种全局存储(这两个屏幕都可以访问),并将数据放在那里。 更多关于活动得到了:http://developer.android.com/guide/components/activities.html

+0

接过你提供的链接一看,仍然没有IDEEA怎么做我想要什么,笑 –

+0

=),当我有时间,我会提供一个例子你正在寻找这样的事情,证明我们正在谈论一个配置活动,我是对的吗? – CarlosB

+0

插入代码示例的答案希望它有帮助:) – CarlosB