Как запустить Intent из контекстного меню - PullRequest
0 голосов
/ 26 июня 2019

У меня есть contextMenu с одним элементом внутри моего фрагмента.Я хочу запустить другое намерение, но кажется, что элемент не может определить щелчок

 override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
        super.onCreateContextMenu(menu, v, menuInfo)
        menu?.setHeaderTitle("Menu");
        menu?.add(0, 1000, 0, R.string.context_add_content_title)

    }
 override fun onContextItemSelected(item: MenuItem?): Boolean {


            when(item?.itemId){
                1000 ->  startManageContentActivity()
            }

        Log.e("Clicked", "Yes at $item")
        return super.onContextItemSelected(item)
    }

    private fun startManageContentActivity() {
        val intent: Intent = Intent(activity, ManageContentActivity::class.java)
        startActivity(intent)
    }

Может ли кто-нибудь помочь мне с этим

Ответы [ 2 ]

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

Проблема заключалась в том, что вы не добавляли пункты меню в контекстное меню.

Этот будет работать:

class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    registerForContextMenu(inc_btn)
}

override fun onCreateContextMenu(
    menu: ContextMenu, v: View,
    menuInfo: ContextMenuInfo?) {
    super.onCreateContextMenu(menu, v, menuInfo)
    val inflater = menuInflater
    inflater.inflate(R.menu.sample_menu, menu)
}

override fun onContextItemSelected(item: MenuItem): Boolean {
        Log.d("mlogs", "click")
        if (item.title == "Save") {
            Log.d("mlogs", "SAVE")
        } else {
            return false
        }
        return true
    }
}

И не забудьте добавить свои пункты меню в меню.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/new_game"
        android:title="First"
        app:showAsAction="ifRoom" />
    <item android:id="@+id/help"
        android:title="Second" />
</menu>
0 голосов
/ 26 июня 2019

Я не знаю много о kotlin, но я знаю, что в Java это будет:

@Override
public boolean onContextItemSelected(MenuItem item) {

    if (item.getTitle() == getResources().getString(R.string.context_add_content_title)) {
        // do whatever
    }else {
        return  false;
    }
    return true;
}
...