我正在製作一個計算器(這些位未顯示在下面的代碼中),並且我在應用程序底部有一個工具欄,我可以從菜單切換其可見性。這是我目前MainActivity類別:Android工具欄在可見/不見時保存狀態
public class MainActivity extends Activity implements OnClickListener {
public Toolbar toolbar_btm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar_btm = findViewById(R.id.toolbar_bottom);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Toolbar toolbar_btm = findViewById(R.id.toolbar_bottom);
outState.putInt("TOOLBAR_VISIBLE", toolbar_btm.getVisibility());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//Toolbar toolbar_btm = findViewById(R.id.toolbar_bottom);
toolbar_btm.setVisibility(savedInstanceState.getInt("TOOLBAR_VISIBLE"));
}
//Toggles the toolbar to show/hide
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.toolbar_toggle:
Toolbar toolbar_btmtog = findViewById(R.id.toolbar_bottom);
if (toolbar_btmtog.getVisibility() == View.GONE)
toolbar_btmtog.setVisibility(View.VISIBLE);
else if (toolbar_btmtog.getVisibility() == View.VISIBLE)
toolbar_btmtog.setVisibility(View.GONE);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
不過,我似乎無法保持這種可見光/消失狀態在內存中。我的onSaveInstanceState使用和onRestoreInstanceState試過了,但是當我運行我的代碼,它拋出以下異常:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.calculator/com.example.calculator.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.widget.Toolbar.setVisibility(int)' on a null object reference
我根本無法弄清楚的問題是什麼。我正在使用putInt
和getInt
,並且我正在聲明具有正確名稱的工具欄。那麼,爲什麼我會得到一個空對象引用?
爲您的活動 –
創建自定義工具欄這是什麼行它摔碎在 –
, 'toolbar_btm.setVisibility(savedInstanceState .getInt(「TOOLBAR_VISIBLE」));' – tobulos1