Диалог оповещения из пункта контекстного меню во фрагменте ничего не показывает - PullRequest
0 голосов
/ 23 апреля 2020

Во-первых, я использую Навигационный ящик для показа некоторых фрагментов, при попытке показать контекстное меню во фрагментах, которое не отображается как контекст, только как меню параметров. затем я попытался использовать его как есть (меню параметров), но он не отображает мое диалоговое окно с предупреждением, хотя я пытался использовать его для действия, и метод работал отлично

Это главное. xml Файл меню

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_settings"
    android:title="@string/action_settings" />

и это мой файл фрагмента .kt

override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo?) {
    menu.add(0, v.getId(), 0, "action_settings")
}

override fun onContextItemSelected(item: MenuItem): Boolean {
    if (item.getItemId() == R.id.action_settings) {
        val dialog = AlertDialog.Builder(getContext())
        dialog.setTitle("Enter Bookmark Name")
        val factory = LayoutInflater.from(this.getContext())
        val view: View = factory.inflate(layout.alertlayout, null)
        dialog.setView(view)
        val alert = dialog.create()
        alert.show()
    }

    return true;
}

И это моя попытка применить коды к действию, пробная версия, которая сработала для меня

class Test : AppCompatActivity() {

lateinit var pdf: PDFView
lateinit var Btn1: Button
var ac1 = 0

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_test)

    pdf = findViewById(R.id.Viewer1)
    Btn1 = findViewById(R.id.Btn)
    pdf.fromAsset("01P1.pdf")
        .defaultPage(ac1)
        .enableSwipe(true)
        .scrollHandle(CustomScrollHandle(this))
        .swipeHorizontal(false)//set horizontal swipe to false
        .enableDoubletap(true)//double tap to zoom
        .load()

    registerForContextMenu(Btn1)
}

override fun onContextItemSelected(item: MenuItem): Boolean {
    val dialog = AlertDialog.Builder(this)
    dialog.setTitle("Enter Bookmark Name")
    val factory = LayoutInflater.from(this)
    val view: View = factory.inflate(R.layout.alertlayout, null)
    dialog.setView(view)
    val alert = dialog.create()
    alert.show()
    return true;
}

override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
    if (menu != null) {
        if (v != null) {
            menu.add(0, v.getId(), 0, "action_settings")
        }
    }
}

так, что не так с моим кодом ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...