Java 线程以未捕获的nullpointerexception退出
该应用程序在运行4.1的Note2中运行良好,但在运行htc one的4.2中,我得到一个“线程以未捕获的异常退出”和NullPointerexception。我向您保证id匹配中没有错误(我已经反复检查了好几次)。该应用程序基本上从Google输出最高的资源解析图像。 这是航海日志Java 线程以未捕获的nullpointerexception退出,java,android,multithreading,android-asynctask,Java,Android,Multithreading,Android Asynctask,该应用程序在运行4.1的Note2中运行良好,但在运行htc one的4.2中,我得到一个“线程以未捕获的异常退出”和NullPointerexception。我向您保证id匹配中没有错误(我已经反复检查了好几次)。该应用程序基本上从Google输出最高的资源解析图像。 这是航海日志 11-15 12:18:54.589: D/dalvikvm(14843): Late-enabling CheckJNI 11-15 12:18:54.700: W/ResourceType(14843): Sk
11-15 12:18:54.589: D/dalvikvm(14843): Late-enabling CheckJNI
11-15 12:18:54.700: W/ResourceType(14843): Skipping entry 0x7f040005 in package table 0 because it is not complex!
11-15 12:18:54.700: W/ResourceType(14843): Skipping entry 0x7f040005 in package table 0 because it is not complex!
11-15 12:18:54.710: W/ResourceType(14843): Skipping entry 0x7f040005 in package table 0 because it is not complex!
11-15 12:18:54.710: W/ResourceType(14843): Skipping entry 0x7f040005 in package table 0 because it is not complex!
11-15 12:18:54.750: D/TAG(14843): MainActivity has started.
11-15 12:18:54.800: D/libEGL(14843): loaded /system/lib/egl/libEGL_adreno200.so
11-15 12:18:54.800: D/libEGL(14843): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
11-15 12:18:54.810: D/libEGL(14843): loaded /system/lib/egl/libGLESv2_adreno200.so
11-15 12:18:54.810: I/Adreno200-EGL(14843): <qeglDrvAPI_eglInitialize:269>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_VANILLA.04.02.02.60.051_msm8960_JB_VANILLA_CL2997615_release_AU (CL2997615)
11-15 12:18:54.810: I/Adreno200-EGL(14843): Build Date: 04/11/13 Thu
11-15 12:18:54.810: I/Adreno200-EGL(14843): Local Branch:
11-15 12:18:54.810: I/Adreno200-EGL(14843): Remote Branch: quic/mako_jb_mr1
11-15 12:18:54.810: I/Adreno200-EGL(14843): Local Patches: NONE
11-15 12:18:54.810: I/Adreno200-EGL(14843): Reconstruct Branch: AU_LINUX_ANDROID_JB_VANILLA.04.02.02.60.051 + NOTHING
11-15 12:18:54.850: D/OpenGLRenderer(14843): Enabling debug mode 0
11-15 12:18:58.704: D/TAG(14843): In button listener
11-15 12:18:58.704: D/TAG(14843): String has been added!!!
11-15 12:18:58.714: D/TAG(14843): Making the fragment now!!
11-15 12:18:58.714: D/TAG(14843): Arguments passed!!
11-15 12:18:58.714: D/TAG(14843): Fragment made!!
11-15 12:18:58.724: D/AndroidRuntime(14843): Shutting down VM
11-15 12:18:58.734: W/dalvikvm(14843): threadid=1: thread exiting with uncaught exception (group=0x41bba930)
11-15 12:18:58.754: E/AndroidRuntime(14843): FATAL EXCEPTION: main
11-15 12:18:58.754: E/AndroidRuntime(14843): java.lang.NullPointerException
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.AbsListView.obtainView(AbsListView.java:2159)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.ListView.makeAndAddView(ListView.java:1831)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.ListView.fillDown(ListView.java:674)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.ListView.fillFromTop(ListView.java:735)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.ListView.layoutChildren(ListView.java:1652)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.AbsListView.onLayout(AbsListView.java:1994)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.View.layout(View.java:14015)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:702)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.View.layout(View.java:14015)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.View.layout(View.java:14015)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.View.layout(View.java:14015)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.View.layout(View.java:14015)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.os.Handler.handleCallback(Handler.java:725)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.os.Handler.dispatchMessage(Handler.java:92)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.os.Looper.loop(Looper.java:137)
11-15 12:18:58.754: E/AndroidRuntime(14843): at android.app.ActivityThread.main(ActivityThread.java:5227)
11-15 12:18:58.754: E/AndroidRuntime(14843): at java.lang.reflect.Method.invokeNative(Native Method)
11-15 12:18:58.754: E/AndroidRuntime(14843): at java.lang.reflect.Method.invoke(Method.java:511)
11-15 12:18:58.754: E/AndroidRuntime(14843): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
11-15 12:18:58.754: E/AndroidRuntime(14843): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
11-15 12:18:58.754: E/AndroidRuntime(14843): at dalvik.system.NativeStart.main(Native Method)
11-15 12:18:54.589:D/dalvikvm(14843):延迟启用CheckJNI
11-15 12:18:54.700:W/ResourceType(14843):跳过包表0中的条目0x7f040005,因为它并不复杂!
11-15 12:18:54.700:W/ResourceType(14843):跳过包表0中的条目0x7f040005,因为它并不复杂!
11-15 12:18:54.710:W/ResourceType(14843):跳过包表0中的条目0x7f040005,因为它并不复杂!
11-15 12:18:54.710:W/ResourceType(14843):跳过包表0中的条目0x7f040005,因为它并不复杂!
11-15 12:18:54.750:D/TAG(14843):主活动已开始。
11-15 12:18:54.800:D/libEGL(14843):loaded/system/lib/egl/libEGL_adreno200.so
11-15 12:18:54.800:D/libEGL(14843):loaded/system/lib/egl/libGLESv1_CM_adreno200.so
11-15 12:18:54.810:D/libEGL(14843):loaded/system/lib/egl/libGLESv2_adreno200.so
11-15 12:18:54.810:I/Adreno200 EGL(14843)::EGL 1.4高通公司版本:AU_LINUX_ANDROID_JB_VANILLA.04.02.02.60.051_msm8960_JB_VANILLA_CL2997615_发布版(CL2997615)
11-15 12:18:54.810:I/Adreno200 EGL(14843):建造日期:2013年11月4日星期四
11-15 12:18:54.810:I/Adreno200 EGL(14843):本地分支机构:
11-15 12:18:54.810:I/Adreno200 EGL(14843):远程分支:quic/mako_jb_mr1
11-15 12:18:54.810:I/Adreno200 EGL(14843):局部斑块:无
11-15 12:18:54.810:I/Adreno200 EGL(14843):重构分支:AU_LINUX_ANDROID_JB_VANILLA.04.02.02.60.051+NOTHING
11-15 12:18:54.850:D/OpenGLRenderer(14843):启用调试模式0
11-15 12:18:58.704:D/TAG(14843):在按钮侦听器中
11-15 12:18:58.704:D/TAG(14843):字符串已添加!!!
11-15 12:18:58.714:D/TAG(14843):现在制作碎片!!
11-15 12:18:58.714:D/TAG(14843):参数已通过!!
11-15 12:18:58.714:D/标签(14843):碎片制造!!
11-15 12:18:58.724:D/AndroidRuntime(14843):关闭虚拟机
11-15 12:18:58.734:W/dalvikvm(14843):threadid=1:线程退出时出现未捕获异常(组=0x41bba930)
11-15 12:18:58.754:E/AndroidRuntime(14843):致命异常:main
11-15 12:18:58.754:E/AndroidRuntime(14843):java.lang.NullPointerException
11-15 12:18:58.754:E/AndroidRuntime(14843):位于android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.AbsListView.obtainView(AbsListView.java:2159)
11-15 12:18:58.754:E/AndroidRuntime(14843):位于android.widget.ListView.makeAndAddView(ListView.java:1831)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.ListView.fillDown(ListView.java:674)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.ListView.fillFromTop(ListView.java:735)
11-15 12:18:58.754:E/AndroidRuntime(14843):位于android.widget.ListView.layoutChildren(ListView.java:1652)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.AbsListView.onLayout(AbsListView.java:1994)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.view.layout(view.java:14015)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:702)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.view.layout(view.java:14015)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.view.layout(view.java:14015)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.view.layout(view.java:14015)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.view.layout(view.java:14015)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewGroup.layout(ViewGroup.java:4373)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.Choreographer.doFrame(Choreographer.java:532)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-15 12:18:58.754:E/AndroidRuntime(14843):在android.os.Handler.handleCallback(Han
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("TAG","MainActivity has started.");
drawer_enter=(EditText)findViewById(R.id.drawer_enter);
list=(ListView)findViewById(R.id.left_drawer);
//image_button=(Button)findViewById(R.id.image_button);
//image_button.setOnClickListener(button);
drawer_enter.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(drawer_enter.getWindowToken(), 0);
Log.d("TAG","In button listener");
inflateString(drawer_enter.getText().toString());
MakeFrag();
return true;
}
return false;
}
});
drawer=(DrawerLayout)findViewById(R.id.drawer_layout);
listen=new ActionBarDrawerToggle(this,drawer,R.drawable.ic_launcher,0,0){
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle("History");
}
public void onDrawerClosed(View drawerView) {
getActionBar().setTitle("Best Google Image");
}
};
drawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
drawer.setDrawerListener(listen);
list.setOnItemClickListener(new DrawerItemClickListener());
}
/*private OnClickListener button=new OnClickListener() {
@Override
public void onClick(View theView) {
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(drawer_enter.getWindowToken(), 0);
Log.d("TAG","In button listener");
//int num=inflateString(drawer_enter.getText().toString());
MakeFrag();
}
};*/
private class DrawerItemClickListener implements ListView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
MakeDrawerFrag(position);
//drawer.closeDrawer(arg0);
}
}
public void MakeFrag(){
Log.d("TAG", "Making the fragment now!!");
Fragment fragment=new ImageFragment();
Bundle args=new Bundle();
args.putString(ImageFragment.ARG_IMAGE_SEARCH,drawer_enter.getText().toString());
fragment.setArguments(args);
FragmentManager fragmentManager=getFragmentManager();
Log.d("TAG", "Arguments passed!!");
fragmentManager.beginTransaction().replace(R.id.frame_layout, fragment).addToBackStack(null).commit();
Log.d("TAG", "Fragment made!!");
}
private void inflateString(String name)
{
int i=0;
for(i=0;i<names.length;i++){
if(names[i]==null){
names[i]=name;
break;
}
}
list.setAdapter(new ArrayAdapter<String>(this,R.layout.list_item,names));
Log.d("TAG","String has been added!!!");
}
public class ImageFragment extends Fragment{
public static final String ARG_IMAGE_SEARCH = "image_search";
public Bitmap done=null;
private String search="",newSearch="";
private ImageView photo=null;
/*public ImageFragment() {
// Empty constructor required for fragment subclasses
}*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("TAG","making the view of the Fragment!!!");
search=getArguments().getString(ARG_IMAGE_SEARCH);
int i;
for(i=0;i<search.length();i++){
if(search.charAt(i)==' '){
newSearch+="%20";
}
else{
newSearch+=search.charAt(i);
}
}
Log.d("TAG",newSearch);
new ImageLoader().execute(newSearch);
View rootView = inflater.inflate(R.layout.image_view, container, false);
photo=(ImageView) rootView.findViewById(R.id.image_view);
photo.setImageBitmap(done);
getActivity().setTitle(getArguments().getString(ARG_IMAGE_SEARCH));
return rootView;
}
private class ImageLoader extends AsyncTask<String,Void,Void>{
@Override
protected Void doInBackground(String... args) {
// TODO Auto-generated method stub
try{
Log.d("TAG", "Background thread has started!!");
URL url=new URL("https://ajax.googleapis.com/ajax/services/search/images?" +
"v=1.0&q="+args[0]);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
String urlData;
StringBuilder builder=new StringBuilder();
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((urlData=reader.readLine()) != null){
builder.append(urlData);
}
JSONObject first=new JSONObject(builder.toString());
int i,larg = 0;
for(i=0;i<2;i++){
if((first.getJSONObject("responseData").getJSONArray("results").getJSONObject(i).getInt("width"))>first.getJSONObject("responseData").getJSONArray("results").getJSONObject(i+1).getInt("width")){
larg=i;
}
else larg=i+1;
}
String image=first.getJSONObject("responseData").getJSONArray("results").getJSONObject(larg).getString("url");
URL imgUrl = new URL(image);
HttpURLConnection imgConnection=(HttpURLConnection)imgUrl.openConnection();
InputStream input=imgConnection.getInputStream();
done=BitmapFactory.decodeStream(input);
Log.d("TAG","Bitmap has been formed!!");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result){
photo.setImageBitmap(done);
}
search=getArguments().getString(ARG_IMAGE_SEARCH);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.image_view, container, false);
try {
search=getArguments().getString(ARG_IMAGE_SEARCH);
Log.d("onCreateView",search); // this will print out the search string to logcat
} catch (Exception e) {
e.printStackTrace(); // or throw an exception and print it to logcat
}
return rootView;
}
static ImageFragment newInstance(String string){
ImageFragment fragment = new ImageFragment();
Bundle args = new Bundle();
args.putString(ImageFragment.ARG_IMAGE_SEARCH, string);
fragment.setArguments(args);
return fragment;
}
Fragment newImageFrag = ImageFragment.newInstance(WHATEVER_STRING_ARGUMENT_YOU_NEED_TO_PASS);
// from here add or replace the fragment as normal
search=getArguments().getString(ARG_IMAGE_SEARCH);