Android 如何更正此文件搜索应用程序?获取nullpointerexception错误
我正在尝试制作一个android应用程序,在用户实时键入时搜索手机文件并将其列在搜索框下。请帮助更正代码,我收到一个空指针异常。所有资源都已到位Android 如何更正此文件搜索应用程序?获取nullpointerexception错误,android,android-4.4-kitkat,Android,Android 4.4 Kitkat,我正在尝试制作一个android应用程序,在用户实时键入时搜索手机文件并将其列在搜索框下。请帮助更正代码,我收到一个空指针异常。所有资源都已到位 import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import android.os.Bundle; import android.app.ListActivity; import android.text.Editable; import a
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.ListActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.ProgressBar;
public class MainActivity extends ListActivity implements TextWatcher {
File[] myfiles;
FilenameFilter filter;
TextWatcher watcher;
String query;
static File file;
EditText eT;
ListView list;
ArrayList<String> myList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ProgressBar progressBar = new ProgressBar(this);
progressBar.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
progressBar.setIndeterminate(true);
list.setEmptyView(progressBar);
ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
root.addView(progressBar);
list = (ListView) findViewById(android.R.id.list);
File file = new File("Environment.getExternalStorageDirectory().getPath()");
myfiles = file.listFiles(filter);
Log.d("tag", "files passed");
eT = (EditText) findViewById(R.id.editText1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
query = ((EditText) s).getText().toString();
filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
String lcaseName = filename.toLowerCase();
if(lcaseName.contains(query)) {
return true;
}
else {
return false;
}
}
};
list.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, myList));
myList = new ArrayList<String>();
for(int i =0; i < myfiles.length; i++) {
myList.add(myfiles[i].getName());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
}
导入java.io.File;
导入java.io.FilenameFilter;
导入java.util.ArrayList;
导入android.os.Bundle;
导入android.app.ListActivity;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.Log;
导入android.view.Menu;
导入android.view.ViewGroup;
导入android.view.ViewGroup.LayoutParams;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.ProgressBar;
公共类MainActivity扩展ListActivity实现TextWatcher{
文件[]我的文件;
文件名过滤器;
文本观察者;
字符串查询;
静态文件;
编辑文本;
列表视图列表;
ArrayList myList;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ProgressBar ProgressBar=新的ProgressBar(此);
progressBar.setLayoutParams(新的LayoutParams)(LayoutParams.WRAP_内容,
LayoutParams.WRAP_内容);
progressBar.SetUndeterminate(真);
list.setEmptyView(progressBar);
ViewGroup root=(ViewGroup)findviewbyd(android.R.id.content);
root.addView(progressBar);
list=(ListView)findViewById(android.R.id.list);
File File=新文件(“Environment.getExternalStorageDirectory().getPath()”;
myfiles=file.listFiles(过滤器);
Log.d(“标记”、“传递的文件”);
eT=(EditText)findViewById(R.id.editText1);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共无效后文本已更改(可编辑){
//TODO自动生成的方法存根
查询=((EditText)s.getText().toString();
filter=新文件名filter(){
@凌驾
公共布尔接受(文件目录,字符串文件名){
字符串lcaseName=filename.toLowerCase();
if(lcaseName.contains(查询)){
返回true;
}
否则{
返回false;
}
}
};
list.setAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,myList));
myList=新的ArrayList();
对于(int i=0;i
您正在使用list
进行初始化
从问题注释中提取的调试过程:
list
进行初始化
从问题注释中提取的调试过程:
list
进行初始化
从问题注释中提取的调试过程:
list
进行初始化
从问题注释中提取的调试过程:
在代码中发布有关崩溃的问题时,请始终包含步骤1和步骤2中的信息。变量
列表
未初始化。但在修复此问题后,您将再次获得NullPointerException
,因为您使用的filter
也是空的
myfiles = file.listFiles(filter);
变量
列表
未初始化。但在修复此问题后,您将再次获得NullPointerException
,因为您使用的filter
也是空的
myfiles = file.listFiles(filter);
变量
列表
未初始化。但在修复此问题后,您将再次获得NullPointerException
,因为您使用的filter
也是空的
myfiles = file.listFiles(filter);
变量
列表
未初始化。但在修复此问题后,您将再次获得NullPointerException
,因为您使用的filter
也是空的
myfiles = file.listFiles(filter);
1.请参阅logcat中的异常stacktrace。2.在代码中找到对应的行。3.找出原因,修复并测试问题是否消失。4.如果这没用,