Android 如何在活动之间传递视图可见性状态
嘿,伙计们,如何在我的项目中使用SharedReferences。我的Main活动和secondactivity中有一个浮动按钮单击浮动按钮时,指南针将被禁用,然后当我进入secondactivity时,指南针将被启用,而不是禁用。如何解决此问题 这是我的代码基础活动Android 如何在活动之间传递视图可见性状态,android,android-studio,android-intent,Android,Android Studio,Android Intent,嘿,伙计们,如何在我的项目中使用SharedReferences。我的Main活动和secondactivity中有一个浮动按钮单击浮动按钮时,指南针将被禁用,然后当我进入secondactivity时,指南针将被启用,而不是禁用。如何解决此问题 这是我的代码基础活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton compass1 = (FloatingActionButton)findViewById(R.id.comp);
compass1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(findViewById(R.id.relativeLayout1).getVisibility()==View.VISIBLE){
findViewById(R.id.relativeLayout1).setVisibility(View.GONE);
Toast.makeText(getApplicationContext(),"Compass Has Been Disabled",Toast.LENGTH_SHORT).show();
}
else{
findViewById(R.id.relativeLayout1).setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(),"Compass Has Been Enabled",Toast.LENGTH_SHORT).show();
}
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
你不需要
SharedReferences
,只需传递一个包含指南针可见性状态的Intent extra即可
从compass1保存状态单击类字段中的侦听器isCompassVisible
为SecondFloor
创建意图时,请执行以下操作:
Intent myIntent = new Intent(this,SecondFloor.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
myIntent.putExtra("isCompassVisible", isCompassVisible);
startActivity(myIntent);
在SecondFloor
活动的onCreate
(或您需要的任何地方):
1.您可以使用共享首选项将值设置为:
SharedPreferences sharedPreferences = getSharedPreferences(Values.SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("isShowing", true/false);
editor.apply();
并将其作为:
SharedPreferences prefs = ((Activity)context).getSharedPreferences("TAG", Context.MODE_PRIVATE);
Boolean shown = prefs.getBoolean("isShowing",true);
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putBoolean("isShowing",true/false);
intent.putExtras(bundle);
startActivity(intent);
并得到它:
Boolean b = getIntent().getBooleanExtra("isShowing",false);
没有必要创建
Bundle
对象,但除此之外你是对的。我不知道如何“从compass1保存状态单击类字段isCompassVisible中的侦听器”。对不起,我是android的新手isCompassVisible=findViewById(R.id.relativeLayout1)。getVisibility()==View.VISIBLE?false:true;
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putBoolean("isShowing",true/false);
intent.putExtras(bundle);
startActivity(intent);
Boolean b = getIntent().getBooleanExtra("isShowing",false);