Android:MenuInflater仅适用于模拟器,非真实设备

时间:2017-01-24 02:46:57

标签: java android android-studio popup layout-inflater

出于某种原因,当以下代码运行时,我的手机将不会显示带有“+创建新曲目”文本的弹出窗口,但如果我在Android Studio模拟器上运行,则同样的事情会有效。

我无法发现此问题的根源。在我的模拟器popup.show()上显示一个窗口,但是当我通过调试器在我的设备上单步执行此行时什么都不做。奇怪的是,发生这种情况时,popup在设备上似乎不为空。

如何让弹出窗口显示在真实设备上?

private void showTrackListing(){
        int writePermissionCheck = ContextCompat.checkSelfPermission(getActivity(),
                Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (writePermissionCheck != PackageManager.PERMISSION_GRANTED){
            Toast.makeText(getActivity(), "Need storage write permissions", Toast.LENGTH_LONG).show();
            return;
        }
        trackListing = getTrackNames();                      
        PopupMenu popup = new PopupMenu(getActivity(), v);

        for (int i = 0; i < trackListing.length; i++) {      //add a menu item for each existing track
            popup.getMenu().add(trackListing[i].getName());
        }

        //TODO: Add Checkable list on longpress to delete files
        //TODO: potentially change popup menu to ListView for better CAB cooperation
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.new_track:
                        trackSelectButton.setText("...");
                        Toast.makeText(getActivity(), "Name your new track.", Toast.LENGTH_SHORT).show();
                        txtTrackName.setVisibility(txtTrackName.VISIBLE);
                        return true;
                    default:
                        selectedTrackName = (item.getTitle().toString());
                        trackSelectButton.setText(selectedTrackName);
                        for (int i = 0; i < trackListing.length; i++) {      //add a menu item for each existing track
                            if (trackListing[i].getName().equals(selectedTrackName)) {
                                selectedTrack = trackListing[i];
                                AudioRecorder.setFile(selectedTrack);
                            }
                        }
                        return true;
                }
            }
        });

        MenuInflater popupInflater = popup.getMenuInflater();
        popupInflater.inflate(R.menu.popup_menu_track_selection, popup.getMenu());
        popup.show();
    }

popup_menu_track_selection.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        <item android:id="@+id/new_track"
            android:title="+ create new track"/>
    </menu>

0 个答案:

没有答案