Пишу через гугл переводчик, извините за ошибки. Я пишу заявление для себя, я новичок, и я просмотрел много ответов, и я до сих пор не могу найти кусок кода. Если я выберу видимость FAB в меню и FAB во втором действии отсутствует в файле app_bar_main, GONE или INVISIBLE. Я пытаюсь использовать этот проект частично
https://github.com/androidmads/NavDrawerActivity
Второй вид деятельности должен быть WebView
public boolean onOptionsItemSelected(MenuItem item) {
// previously committed editor object never use
// so we can create new editor reference
// editor = sharedPreferences.edit();
switch (item.getItemId()) {
case R.id.action_settings:
break;
case R.id.menu_print:
if (item.isChecked()) {
item.setChecked(false);
View fab = findViewById( R.id.fab );
fab.setVisibility( View.INVISIBLE );
} else {
item.setChecked(true);
View fab = findViewById( R.id.fab );
fab.setVisibility( View.VISIBLE );
}
break;
case R.id.action_exit:
new AlertDialog.Builder(this)
.setTitle("Wyjście")
.setMessage("Czy na pewno chcesz zamknąć aplikację???")
.setNegativeButton("Nie", null)
.setPositiveButton("Tak", new DialogInterface.OnClickListener() {
final public void onClick(DialogInterface arg0, int arg1) {
// MainActivity.super.onBackPressed();
}
}).create().show();
break;
}
return super.onOptionsItemSelected(item);
}
Он работает в первом случае вы не можете видеть FAB во втором
BaseActivity
public class BaseActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
DrawerLayout drawer;
FloatingActionButton fab;
NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fab = (FloatingActionButton) findViewById(R.id.fab);
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) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
if (fab.getVisibility() == View.VISIBLE)
{
fab.setVisibility( View.VISIBLE );
// Its visible
}
else
{
fab.setVisibility( View.INVISIBLE );
// Either gone or invisible
}
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.nav_activity1) {
startAnimatedActivity(new Intent(getApplicationContext(), FirstActivity.class));
if (fab.getVisibility() == View.VISIBLE)
{
fab.setVisibility( View.VISIBLE );
// Its visible
}
else
{
fab.setVisibility( View.INVISIBLE );
// Either gone or invisible
}
} else if (id == R.id.nav_activity2) {
startAnimatedActivity(new Intent(getApplicationContext(), SecondActivity.class));
if (fab.getVisibility() == View.VISIBLE)
{
fab.show();
// Its visible
}
else
{
fab.hide();
// Either gone or invisible
}
}
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
protected void startAnimatedActivity(Intent intent) {
startActivity(intent);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}
}
FirstActivity
public class FirstActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
FloatingActionButton fab1 = (FloatingActionButton) findViewById( R.id.fab );
//inflate your activity layout here!
@SuppressLint("InflateParams")
View contentView = inflater.inflate(R.layout.activity_first, null, false);
drawer.addView(contentView, 0);
navigationView.setCheckedItem(R.id.nav_activity1);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Tutaj nic nie drukujemy...", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_first, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// previously committed editor object never use
// so we can create new editor reference
// editor = sharedPreferences.edit();
switch (item.getItemId()) {
case R.id.action_settings:
break;
case R.id.menu_drukuj:
if (item.isChecked()) {
item.setChecked(false);
View fab = findViewById( R.id.fab );
fab.setVisibility( View.INVISIBLE );
} else {
item.setChecked(true);
View fab = findViewById( R.id.fab );
fab.setVisibility( View.VISIBLE );
}
break;
case R.id.action_exit:
new AlertDialog.Builder(this)
.setTitle("Wyjście")
.setMessage("Czy na pewno chcesz zamknąć aplikację???")
.setNegativeButton("Nie", null)
.setPositiveButton("Tak", new DialogInterface.OnClickListener() {
final public void onClick(DialogInterface arg0, int arg1) {
// MainActivity.super.onBackPressed();
}
}).create().show();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
super.onBackPressed();
}
}
}
SecondActivity
publi c класс SecondActivity расширяет BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//inflate your activity layout here!
View contentView = inflater.inflate(R.layout.activity_second, null, false);
drawer.addView(contentView, 0);
navigationView.setCheckedItem(R.id.nav_activity2);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Hello Second Activity", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
Я хотел бы проверить параметр печати в меню в первом упражнении и сделать FAB видимым во втором упражнении, где нет меню.