引用和更改其他活动的活动元素

时间:2013-06-24 12:08:42

标签: android

我有两个活动,主要活动和另一个活动,充当第一个活动的设置位置。我有一个开关,想要将主要活动的布局设置为setVisibility(View.INVISIBLE)setVisibility(View.VISIBLE)

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

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

那么,我如何设置一个可以改变其他活动内容的活动呢?

2 个答案:

答案 0 :(得分: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();                
        }
    });
....
}

然后在您要使用此设置的活动或背景代码上:

公共类ConsumerViewextends View实现GameListener {     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));
            ....
}
    ....
}

希望这会有所帮助:)

答案 1 :(得分:0)

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