我正在嘗試製作一個Android應用程序,該應用程序可以搜索手機文件,並在用戶輸入實時時將其列在搜索框下。請幫助糾正代碼,得到空指針異常。所有的資源都已到位。如何更正此文件搜索應用程序?獲取nullpointerexception錯誤
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
}
}
1.請參閱logcat中的異常堆棧跟蹤。 2.在代碼中找到相應的行。 3.找出可能的原因,解決並測試問題是否消失。 4.如果沒有幫助,請提供問題中步驟1和2的信息,以便其他人可以提供幫助。 – laalto
請新來android,我不知道如何正確使用logcat。任何幫助將不勝感激。謝謝 – user3234870