Java Android:MenuInflater只能在模拟器上工作,不能在真实设备上工作
由于某些原因,当以下代码运行时,我的手机不会显示带有文本“+创建新曲目”的弹出窗口,但如果我在Android Studio模拟器上运行,同样的事情也会发生 我找不出这个问题的根源。在我的emulatorJava Android:MenuInflater只能在模拟器上工作,不能在真实设备上工作,java,android,android-studio,popup,layout-inflater,Java,Android,Android Studio,Popup,Layout Inflater,由于某些原因,当以下代码运行时,我的手机不会显示带有文本“+创建新曲目”的弹出窗口,但如果我在Android Studio模拟器上运行,同样的事情也会发生 我找不出这个问题的根源。在我的emulatorpopup.show()上显示一个窗口,但当我通过调试器在我的设备上单步执行时,这一行什么也不做。奇怪的是,出现这种情况时,弹出窗口在设备上似乎不为空 如何在真实设备上显示弹出窗口 private void showTrackListing(){ int writePermissi
popup.show()
上显示一个窗口,但当我通过调试器在我的设备上单步执行时,这一行什么也不做。奇怪的是,出现这种情况时,弹出窗口
在设备上似乎不为空
如何在真实设备上显示弹出窗口
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();
}
private void showTrackListing(){
int writePermissionCheck=ContextCompat.checkSelfPermission(getActivity(),
清单。权限。写入(外部存储);
if(writePermissionCheck!=已授予PackageManager.PERMISSION\u){
Toast.makeText(getActivity(),“需要存储写入权限”,Toast.LENGTH_LONG.show();
返回;
}
trackListing=getTrackNames();
PopupMenu popup=新的PopupMenu(getActivity(),v);
对于(int i=0;i
弹出菜单\u track\u selection.xml
发布您的“弹出菜单\曲目\选择”layout@RajeshPanchaladded.u是否为写入外部存储添加了ActivityCompat.requestPermissions
?@rafsanahmad007是的,我添加了。权限似乎与弹出窗口未显示的问题没有直接关系。
<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>