我有两个活动,主要活动和另一个活动,充当第一个活动的设置位置。我有一个开关,想要将主要活动的布局设置为setVisibility(View.INVISIBLE)
或setVisibility(View.VISIBLE)
。
我的问题是,当我尝试引用l5
(主要活动中的布局名称)时,它无法识别它。我在主要活动中将它设置为公开,是不是它如何工作?如果它是公开的,它可以用于其他活动。
这只是一个例子,我想在那里制作更多设置内容,比如设置导航抽屉的alpha或更改主活动中EditTexts
的字体大小。
那么,我如何设置一个可以改变其他活动内容的活动呢?
答案 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