0

我有两项活动,一项是主要活动,另一项活动作为第一项活动的设置场所。例如,我有一个想要将布局从主要活动设置为setVisibility(View.INVISIBLE)或的开关setVisibility(View.VISIBLE)

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

这只是一个示例,我想在其中进行更多设置,例如设置导航抽屉的 alpha 或更改EditTexts主活动中的字体大小。

那么,我怎样才能设置一个可以改变另一个活动的东西的活动呢?

4

2 回答 2

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 { 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));
            ....
}
    ....
}

希望这可以帮助 :)

于 2013-06-24T13:41:38.063 回答
0

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

于 2013-06-24T12:16:57.950 回答