FAB в сотый раз - PullRequest
       45

FAB в сотый раз

0 голосов
/ 25 апреля 2020

Пишу через гугл переводчик, извините за ошибки. Я пишу заявление для себя, я новичок, и я просмотрел много ответов, и я до сих пор не могу найти кусок кода. Если я выберу видимость 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 видимым во втором упражнении, где нет меню.

...