总结问题
你好,开发人员,所以。。我想做一个弹出菜单,点击下面的图标,它就会出现在列表视图中的一个项目上。我想这样做,点击出现一个带有一些选项的弹出栏
描述一下你的尝试
我试着按照有关创建弹出式菜单的教程进行操作,但方法总是一样的,我对此没有问题。但它在Logcat上显示了这个空指针错误,我试图用初始化ImageView来修复它,但目前没有任何进展。。例如,我尝试执行“image=(Imageview)findviewbyd(R.id.imagesrc)”之类的操作,但总是出现以下错误:
JAVAlang.RuntimeException:无法启动活动组件信息{com.example.isilente/com.example.isilente.HomePage}:java。lang.NullPointerException:尝试调用虚拟方法“void”。小装置。ImageView。空对象引用上的setOnClickListener(android.view.view$OnClickListener)“”
在适当的时候,显示一些代码
我对编码有这种情况:类-
public class HomePage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
DrawerLayout drawerLayout;
NavigationView navigationView;
Toolbar toolbar;
private AppCompatButton getstart, augurio;
//new stuff
private ArrayList<Music> my_mainarraylist;
private MusicAdapter my_musicadapter;
private ListView listView_songs;
ImageView imageView_puntini;
//end new stuff
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
getstart=findViewById(R.id.GetStart);
imageView_puntini=findViewById(R.id.imageview_puntini);
listView_songs=findViewById(R.id.listview_buongiorno);
//START NEW STUFF
my_mainarraylist=new ArrayList<>();
my_mainarraylist.add(new Music("Buongiorno#1", "Pozione Polisucchio", R.raw.silente, R.id.imageview_play, R.id.imageview_stop, R.id.imageview_puntini));
my_mainarraylist.add(new Music("Augurio", "Hai dato il massimo", R.raw.massimo, R.id.imageview_play, R.id.imageview_stop, R.id.imageview_puntini));
MusicAdapter adapter = new MusicAdapter(this, R.layout.songs_item_listview,my_mainarraylist);
listView_songs.setAdapter(adapter);
listView_songs.setVisibility(View.GONE);
//FINE NEW STUFF
/*----Hooks----*/
drawerLayout = findViewById(R.id.drawerLayout);
navigationView = findViewById(R.id.nav_view);
toolbar = findViewById(R.id.toolbar);
/*----Toolbar----*/
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
/*----NavigationDrawerMenu----*/
//Menu menu = navigationView.getMenu();
navigationView.bringToFront();
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar,R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
//navigationView.setCheckedItem(R.id.nav_home);
navigationView.setNavigationItemSelectedListener(this);
getstart.setOnClickListener(v -> listView_songs.setVisibility(View.VISIBLE));
//popup
imageView_puntini.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(HomePage.this, v);
MenuInflater menuInflater = popupMenu.getMenuInflater();
menuInflater.inflate(R.menu.menuset, popupMenu.getMenu());
popupMenu.show();
}
});
//popup end
}
在res/菜单中:
<menu><item
android:id="@+id/item_settings"
android:title="Settings"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/item_about"
android:title="About"
android:showAsAction="ifRoom|withText"
/></menu>
然后我得到了这个,它是列表视图上的项目...songs-item-listview.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:background="#152238"
android:paddingLeft="5dp"
android:paddingRight="16dp">
<ImageView
android:id="@+id/audio_microfono"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic__431742_audio_communication_instrument_media_microphone_icon"
/>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textview_songs"
android:text="Current song"
android:textStyle="bold"
android:textColor="#eee86b"
android:textSize="16sp"
android:layout_toEndOf="@+id/audio_microfono"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview_artist"
android:text="Current artist"
android:textStyle="italic"
android:textColor="#eee86b"
android:layout_toEndOf="@+id/audio_microfono"
android:layout_below="@+id/textview_songs"
android:textSize="16sp"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageview_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="10dp"
android:src="@drawable/ic_play"/>
<ImageView
android:id="@+id/imageview_stop"
android:layout_width="wrap_content"
android:layout_alignParentEnd="true"
android:paddingRight="5dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_stop"
/>
<ImageView
android:id="@+id/imageview_puntini"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_trepuntini"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
有人说这可能是一个错误,因为按钮不在主活动中,但它在另一个活动中,但在任何情况下,你建议我怎么做?
Ps:这是日志:
2021-09-05 20:20:19.629 9883-9883/com。实例isilente E/AndroidRuntime:致命异常:主进程:com。实例isilente,PID:9883 java。lang.RuntimeException:无法启动活动组件信息{com.example.isilente/com.example.isilente.HomePage}:java。lang.NullPointerException:尝试调用虚拟方法“void”。小装置。ImageView。android上的空对象引用上的setOnClickListener(android.view.view$OnClickListener)”。应用程序。活动线程。在android上执行启动活动(ActivityThread.java:3449)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:3601)。应用程序。服务器事务。启动ActivityItem。在android上执行(LaunchActivityItem.java:85)。应用程序。服务器事务。事务执行器。android上的executeCallbacks(TransactionExecutor.java:135)。应用程序。服务器事务。事务执行器。在android上执行(TransactionExecutor.java:95)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:2066)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:223)。应用程序。活动线程。java上的main(ActivityThread.java:7656)。朗。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:592)。Android内部的操作系统。合子体。main(ZygoteInit.java:947)由以下原因引起:java。lang.NullPointerException:尝试调用虚拟方法“void”。小装置。ImageView。com上的空对象引用上的setOnClickListener(android.view.view$OnClickListener)。实例伊西兰特。主页android上的onCreate(HomePage.java:94)。应用程序。活动android上的performCreate(Activity.java:8000)。应用程序。活动在android上执行创建(Activity.java:7984)。应用程序。仪器仪表。android上的callActivityOnCreate(Instrumentation.java:1309)。应用程序。活动线程。在android上执行启动活动(ActivityThread.java:3422)。应用程序。活动线程。handleLaunchActivity(ActivityThread.java:3601)
Blockquote Blockquote Blockquote
尝试这样初始化你的PopupMenu
popup.getMenu().add(groupId, itemId, order, title);
对于要添加的每个MenuItem
。您还可以查看此链接以查看其他解决方案
(我的解决方案取自此人)
请加上这个
<ImageView
android:id="@+id/imageview_puntini"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_trepuntini"
/>
至活动主页。xml
其中定义了列表视图,而不是列表视图项歌曲项列表视图。xml
,因为您正试图从活动中访问它。
当我运行以下代码时,我的应用程序崩溃: 这是我的Logcat输出: 03-26 12:35:16.900: E/AndroidRuntime(30127): FATAL EXCEPTION: main 03-26 12:35:16.900: E/AndroidRuntime(30127):java.lang.RuntimeException:无法启动活动ComponentInfo{nl.appon
当我在设备上运行应用程序时单击增量按钮时,我的应用程序意外地强制执行这是我的activity_main.xml代码 这是我的mainactivity.java文件 这是调试报告05-23 22:14:45.695 297 36-29736/com.orton.birthdayCard E/AndroidRuntime:致命异常:主进程:com.orton.birthdayCard,PID:2973
我创建了一个应用程序,在Android marshmallow中崩溃,而在under版本中我的应用程序正常工作。 这怎么可能?这是我的清单代码: 这是分级代码: 我读到你必须在代码中修改一些东西,使其与AndroidMarshmallow兼容。 我该如何解决问题呢?
经过几天的计划,我刚刚开始为我的聊天应用程序编写一些代码,但问题是,在Gradle Build完成并将应用程序安装在我的设备上之后,它一直在崩溃。我创建了一个预计会打开新活动的按钮,但它没有这样做,而是崩溃了。在我编写任何代码之前,一切都正常,应用程序打开,logcat没有显示任何错误。以下是错误: 我试着遵循其他一些建议,但都不起作用。以下是我的代码片段: }
我在我的Android应用程序中使用GSON来解析数据。我已经在模型对象中添加了枚举。添加枚举后,我的应用程序开始崩溃。当我让runProguard假的时候,一切都很好。当程序是真的时,我做了我能在网上找到的一切来修复这个问题。但还是没运气。 我已经在proguard-rule文件中做了以下事情 枚举材料示例: 我的堆栈跟踪
----------在android上。应用程序。ActivityThread。android上的installProvider(ActivityThread.java:7447)。应用程序。ActivityThread。android上的installContentProviders(ActivityThread.java:6964)。应用程序。ActivityThread。android上的h