показать существующее навигационное меню, связанное с одним действием в другом действии - PullRequest
0 голосов
/ 16 июня 2019

Я нахожусь в процессе создания приложения и у меня в первом действии есть меню навигации, однако, когда я перехожу ко второму, оно не показывает, так какие биты кода я копирую из своего первого действия дляменю навигации, чтобы показать там тоже?

Я пытался скопировать то, что я считал соответствующими битами кода из первого действия во второе, однако это второе действие завершилось сбоем, поэтому я попытался удалить этот добавленный код и потерпел неудачучтобы перевернуть его, я импортировал код из резервной копии, чтобы он снова заработал.

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val toolbar: Toolbar = findViewById(R.id.toolbar)
    setSupportActionBar(toolbar)

    val fab: FloatingActionButton = findViewById(R.id.fab)
    fab.setOnClickListener { view ->
        val intent = Intent(this, Main2Activity::class.java)
        val sharedPref = this?.getPreferences(Context.MODE_PRIVATE)
        val mystr = sharedPref.getInt(getString(R.string.STR), 0)
        intent.putExtra("data", mystr)
        startActivity(intent)
    }
    val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
    val navView: NavigationView = findViewById(R.id.nav_view)
    val toggle = ActionBarDrawerToggle(
        this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
    )
    drawerLayout.addDrawerListener(toggle)
    toggle.syncState()

    navView.setNavigationItemSelectedListener(this)

    //val db = FirebaseFirestore.getInstance()
}

override fun onBackPressed() {
    val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START)
    } else {
        super.onBackPressed()
    }
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the menu; this adds items to the action bar if it is present.
    menuInflater.inflate(R.menu.main, menu)
    return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    return when (item.itemId) {
        R.id.action_settings -> true
        else -> super.onOptionsItemSelected(item)
    }
}

override fun onNavigationItemSelected(item: MenuItem): Boolean {
    // Handle navigation view item clicks here.
    when (item.itemId) {
        R.id.nav_home -> {
            // Handle the camera action
            val i = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/brobostigon/"))
            startActivity(i)
        }
        R.id.nav_gallery -> {
            val intent = Intent(this, MainActivity::class.java)
            startActivity(intent)
        }
        R.id.nav_slideshow -> {
            val intent = Intent(this, Main2Activity::class.java)
            startActivity(intent)
        }
        R.id.nav_tools -> {

        }
        R.id.nav_share -> {
            val i = Intent(Intent.ACTION_VIEW, Uri.parse("http://taylorworld.me.uk/privacy-policy.html"))
            startActivity(i)
        }
        R.id.nav_send -> {

        }
    }
    val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
    drawerLayout.closeDrawer(GravityCompat.START)
    return true
}

Вот мое второе занятие

class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        //val mystr: Int = intent.getIntExtra("data", 0)
        //editText8.setText(Integer.toString(mystr))
    }

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

val фрагментManager = supportFragmentManager val фрагментTransaction = фрагментManager.beginTransaction ()
val фрагмент = TitleFragment () val фрагмент2 = MiscFragment () фрагментTransaction.add (R.id.contentlayout, фрагмент)
фрагментTransaction.remove (фрагмент2) фрагментTransaction.commit ()

Я включил это в свой mainacctivity oncreate (), думая, что активность загружается, и заставляет загружать определенный фрагмент и только этот фрагмент. contentlayout - это идентификатор макета, к которому он будет применен, т.е. в моем случае это - ограничение содержимого в content_main.xml.

0 голосов
/ 17 июня 2019

Это нереально.Вы должны создать отдельный блок навигации для каждого действия, а это невозможно.

Вместо этого вы можете использовать фрагменты, даже если вам нужно использовать фрагменты с блоком навигации, если вы хотите, чтобы один и тот же блок навигации находился в разных макетах.

...