- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在 AndroidStudio 中运行我的应用程序时,出现以下异常:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.leftover, PID: 5379
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:389)
at com.baoyz.swipemenulistview.SwipeMenuAdapter.getCount(SwipeMenuAdapter.java:32)
at android.widget.ListView.setAdapter(ListView.java:581)
at com.baoyz.swipemenulistview.SwipeMenuListView.setAdapter(SwipeMenuListView.java:65)
at com.example.leftover.StorageFragment.onCreateView(StorageFragment.java:52)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663)
at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
at android.app.Activity.performStart(Activity.java:8013)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3366)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7476)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:939)
这是我工作的 fragment :
public class StorageFragment extends Fragment{
private static final String TAG = "StorageFragment";
private User user;
private Button addButton;
private AutoCompleteTextView autoEditText;
private SwipeMenuListView listView;
private ArrayList<String> list;
private ArrayAdapter listAdapter;
private ArrayAdapter<String> autoCompleteAdapter;
private static final String[] LEBENSMITTEL = new String[]{"Apfel", "Ananas", "Aubergine", "Alkohol", "Artischocke", "Aloe Vera"};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_storage, container, false);
addButton = (Button) v.findViewById(R.id.buttonAddToStorage);
autoEditText = (AutoCompleteTextView) v.findViewById(R.id.search_bar);
listView = (SwipeMenuListView) v.findViewById(R.id.listView);
list = FileHelper.readData(getActivity());
listAdapter = new ArrayAdapter (getActivity(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(listAdapter);
addButton.setOnClickListener((View.OnClickListener) this);
autoCompleteAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, LEBENSMITTEL);
autoEditText.setAdapter(autoCompleteAdapter);
/**
* Swipe-Menu with Add- and Delete-Button
*/
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
// Add-Item
SwipeMenuItem editItem = new SwipeMenuItem(getActivity().getApplicationContext());
editItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE)));
editItem.setWidth(170);
editItem.setIcon(R.drawable.ic_storage_add_24dp);
menu.addMenuItem(editItem);
// Delete-Item
SwipeMenuItem deleteItem = new SwipeMenuItem(getActivity().getApplicationContext());
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25)));
deleteItem.setWidth(170);
deleteItem.setIcon(R.drawable.ic_storage_delete_24dp);
menu.addMenuItem(deleteItem);
}
};
listView.setMenuCreator(creator);
listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
switch (index) {
case 0: //add
showMessageDialog();
break;
case 1: //delete
//nothing happens here
Log.d(TAG, "onMenuItemClick: clicked item " + index);
break;
}
// false : close the menu; true : not close the menu
return false;
}
});
return v;
}
public void setUser(User user) {
this.user = user;
}
/**
* Function for Add-Button
*/
public void onClick(View v) {
switch(v.getId()){
case R.id.buttonAddToStorage:
String itemEntered = autoEditText.getText().toString();
listAdapter.add(itemEntered);
autoEditText.setText("");
FileHelper.writeData(list, getActivity());
Toast.makeText(getActivity(), "Lebensmittel hinzugefügt", Toast.LENGTH_SHORT).show();
break;
}
}
/**
* Method for Message Alert Dialog
*/
private void showMessageDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme);
View v = null;
v = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_storage_layout_add_dialog, (ConstraintLayout) v.findViewById(R.id.layoutDialogContainer));
builder.setView(v);
((TextView) v.findViewById(R.id.textTitle)).setText(getResources().getString(R.string.dialog_message_title));
((TextView) v.findViewById(R.id.textMessage)).setText(getResources().getString(R.string.dialog_message));
((Button) v.findViewById(R.id.buttonHoldItem)).setText(getResources().getString(R.string.im_Lager_halten));
((Button) v.findViewById(R.id.buttonDeleteItem)).setText(getResources().getString(R.string.aus_Lager_entfernen));
final AlertDialog alertDialog = builder.create();
v.findViewById(R.id.buttonHoldItem).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
Toast.makeText(getActivity(), "Ja", Toast.LENGTH_SHORT).show();
}
});
v.findViewById(R.id.buttonDeleteItem).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
Toast.makeText(getActivity(), "Nein", Toast.LENGTH_SHORT).show();
}
});
if(alertDialog.getWindow() != null) {
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
}
alertDialog.show();
} }
错误在 fragment 中,但我不确定。当我尝试打开应用程序时,此错误导致应用程序崩溃。
编辑:
我调试了 onCreateView()
。变量 addButton、autoEditText、listView、list、listAdapter
和 autoCompleteAdapter
均为 null。
但我就是不明白,请原谅我的盲目,但我在哪里可以改变这些不再为空。我以为我初始化了它们...:(
请帮忙。
(我知道这段代码中还有其他一些错误,但现在我需要有关此错误的帮助)
最佳答案
也许您忘记初始化 FileHelper?
FileHelper fileHelper=new FileHelper();
fileHelper.readData(getActivity());
关于java - 错误 : java. lang.NullPointerException:尝试对空对象引用调用接口(interface)方法 'int java.util.List.size()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61696808/
我正在尝试在我的代码库中为我正在编写的游戏服务器更多地使用接口(interface),并了解高级概念以及何时应该使用接口(interface)(我认为)。在我的例子中,我使用它们将我的包相互分离,并使
我有一个名为 Widget 的接口(interface),它在我的整个项目中都在使用。但是,它也用作名为 Widget 的组件的 Prop 。 处理此问题的最佳方法是什么?我应该更改我的 Widget
有一个接口(interface)可以是多个接口(interface)之一 interface a {x:string} interface b {y:string} interface c {z:st
我遇到了一种情况,我需要调用第三方服务来获取一些信息。这些服务对于不同的客户可能会有所不同。我的界面中有一个身份验证功能,如下所示。 interface IServiceProvider { bool
在我的例子中,“RequestHandlerProxy”是一个结构,其字段为接口(interface)“IAdapter”,接口(interface)有可能被调用的方法,该方法的输入为结构“Reque
我有一个接口(interface)Interface1,它已由类A实现,并且设置了一些私有(private)变量值,并且我将类A的对象发送到下一个接受输入作为Interface2的类。那么我怎样才能将
假设我有这样的类和接口(interface)结构: interface IService {} interface IEmailService : IService { Task SendAs
有人知道我在哪里可以找到 XML-RPC 接口(interface)的定义(在 OpenERP 7 中)?我想知道创建或获取对象需要哪些参数和对象属性。每个元素的 XML 示例也将非常有帮助。 最佳答
最近,我一直在阅读有关接口(interface)是抽象的错误概念的文章。一篇这样的帖子是http://blog.ploeh.dk/2010/12/02/InterfacesAreNotAbstract
如果我有一个由第三方实现的现有 IInterface 后代,并且我想添加辅助例程,Delphi 是否提供了任何简单的方法来实现此目的,而无需手动重定向每个接口(interface)方法?也就是说,给定
我正在尝试将 Article 数组分配给我的 Mongoose 文档,但 Typescript 似乎不喜欢这样,我不知道为什么它显示此警告/错误,表明它不可分配. 我的 Mongoose 模式和接口(
我有两个接口(interface): public interface IController { void doSomething(IEntity thing); } public inte
是否可以创建一个扩展 Serializable 接口(interface)的接口(interface)? 如果是,那么扩展接口(interface)的行为是否会像 Serilizable 接口(int
我试图在两个存储之间创建一个中间层,它从存储 A 中获取数据,将其转换为相应类型的存储 B,然后存储它。由于我需要转换大约 50-100 种类型,我希望使用 map[string]func 并根据 s
我正在处理一个要求,其中我收到一个 JSON 对象,其中包含一个日期值作为字符串。我的任务是将 Date 对象存储在数据库中。 这种东西: {"start_date": "2019-05-29", "
我们的方法的目标是为我们现有的 DAO 和模型类引入接口(interface)。模型类由各种类型的资源 ID 标识,资源 ID 不仅仅是随机数,还带有语义和行为。因此,我们必须用对象而不是原始类型来表
Collection 接口(interface)有多个方法。 List 接口(interface)扩展了 Collection 接口(interface)。它声明与 Collection 接口(int
我有一个 Java 服务器应用程序,它使用 Jackson 使用反射 API 对 DTO 进行一般序列化。例如对于这个 DTO 接口(interface): package com.acme.libr
如果我在 Kotlin 中有一个接口(interface): interface KotlinInterface { val id: String } 我可以这样实现: class MyCla
我知道Java中所有访问修饰符之间的区别。然而,有人问了我一个非常有趣的问题,我很难找到答案:Java 中的 private 接口(interface)和 public 接口(interface)有什
我是一名优秀的程序员,十分优秀!