显示弹出窗口的问题
Problems showing popupWindow
我正在为 android 开发一个聊天应用程序。
我无法在弹出窗口中显示联系人。我假装做的是在屏幕右侧显示它们,例如 google+ 显示菜单。问题是我已经搜索了许多结构来显示它们,最后我看到的一个没有被弃用的是 popupWindow。如果这是错误的,我将感谢您的帮助。
当我尝试执行代码时出现此错误(我尝试了很多方法,这实际上是我所拥有的):java.lang.NullPointerException:尝试调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)' osmuogar.letter.interfaz.conversacion.Sala.showContacts(Sala.java:100)
处的空对象引用
Java 代码---
public void showContacts(MenuItem item){
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final ViewGroup popupView = (ViewGroup)layoutInflater.inflate(R.layout.lista_amigos, null);
PopupWindow popupWindow = new PopupWindow(popupView, RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);
final LinearLayout layout = (LinearLayout) popupView.findViewById(R.id.linearLayoutAmigos);
layout.inflate(popupView.getContext(),R.layout.contact,null);
TextView contactName = (TextView) layout.findViewById(R.id.contactname);
contactName.setText("contacto1");
popupView.addView(layout);
popupWindow.setFocusable(true);
popupWindow.update();
popupWindow.showAtLocation(findViewById(R.id.mainLayout), Gravity.RIGHT,0,0);
我的布局---
--lista_amigos
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollViewAmigos">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayoutAmigos">
</LinearLayout>
</ScrollView>
</LinearLayout>
--联系人
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:background="#ffffff">
<TextView
android:id="@+id/contactname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/imageView"
android:text="contact"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@android:color/black"
android:textSize="24sp" />
</RelativeLayout>
感谢您的帮助。
你正在膨胀 R.layout.contact
布局 layout.inflate(popupView.getContext(),R.layout.contact,null);
并且你想找到 ID 为 contactname
的 TextView
但你正在从其他膨胀视图中找到 contantname
视图.所以你应该这样做
View contactView = (View)layout.inflate(popupView.getContext(),R.layout.contact,null);
TextView contactName = (TextView) contactView.findViewById(R.id.contactname);
contactName.setText("contacto1");
popupView.addView(contactView);
希望对您有所帮助。
我正在为 android 开发一个聊天应用程序。
我无法在弹出窗口中显示联系人。我假装做的是在屏幕右侧显示它们,例如 google+ 显示菜单。问题是我已经搜索了许多结构来显示它们,最后我看到的一个没有被弃用的是 popupWindow。如果这是错误的,我将感谢您的帮助。
当我尝试执行代码时出现此错误(我尝试了很多方法,这实际上是我所拥有的):java.lang.NullPointerException:尝试调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)' osmuogar.letter.interfaz.conversacion.Sala.showContacts(Sala.java:100)
处的空对象引用Java 代码---
public void showContacts(MenuItem item){
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final ViewGroup popupView = (ViewGroup)layoutInflater.inflate(R.layout.lista_amigos, null);
PopupWindow popupWindow = new PopupWindow(popupView, RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);
final LinearLayout layout = (LinearLayout) popupView.findViewById(R.id.linearLayoutAmigos);
layout.inflate(popupView.getContext(),R.layout.contact,null);
TextView contactName = (TextView) layout.findViewById(R.id.contactname);
contactName.setText("contacto1");
popupView.addView(layout);
popupWindow.setFocusable(true);
popupWindow.update();
popupWindow.showAtLocation(findViewById(R.id.mainLayout), Gravity.RIGHT,0,0);
我的布局--- --lista_amigos
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollViewAmigos">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayoutAmigos">
</LinearLayout>
</ScrollView>
</LinearLayout>
--联系人
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:background="#ffffff">
<TextView
android:id="@+id/contactname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/imageView"
android:text="contact"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@android:color/black"
android:textSize="24sp" />
</RelativeLayout>
感谢您的帮助。
你正在膨胀 R.layout.contact
布局 layout.inflate(popupView.getContext(),R.layout.contact,null);
并且你想找到 ID 为 contactname
的 TextView
但你正在从其他膨胀视图中找到 contantname
视图.所以你应该这样做
View contactView = (View)layout.inflate(popupView.getContext(),R.layout.contact,null);
TextView contactName = (TextView) contactView.findViewById(R.id.contactname);
contactName.setText("contacto1");
popupView.addView(contactView);
希望对您有所帮助。