2016-01-29 109 views
-1

我正在尝试为我的项目在android工作室做一个应用程序,但是当我试图运行此java文件时,此文件崩溃,应用程序停止工作在我的模拟器上。试图将图像从我的默认画廊导入我的应用程序。在android工作室停止工作的应用程序

import .... 


public class tenant_profile extends Fragment { 

private final int SELECT_PHOTO = 1; 
private ImageView imageView; 
public tenant_profile() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    // Inflate the layout for this fragment 

    super.onCreateView(inflater, container, savedInstanceState); 

    return inflater.inflate(R.layout.fragment_tenant_profile, container, false); 
} 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 



    Button pickImage = (Button) getView().findViewById(R.id.btn_pick); 
    pickImage.setOnClickListener(new OnClickListener() { 
    //enter code here 
     @Override 
     public void onClick(View view) { 
      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent, SELECT_PHOTO); 
     } 
    }); 
} 

    @Override 
    public void onActivityResult (int requestCode, int resultCode, Intent imageReturnedIntent){ 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     switch (requestCode) { 
      case SELECT_PHOTO: 
       if (resultCode == Activity.RESULT_OK) { 
        try { 
         final Uri imageUri = imageReturnedIntent.getData(); 
         final InputStream imageStream = getContext().getContentResolver().openInputStream(imageUri); 
         final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); 
         imageView.setImageBitmap(selectedImage); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } 


       } 
     } 
    } 



} 

我的异常以下:

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime: FATAL EXCEPTION: main 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime: java.lang.NullPointerException 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at com.example.sanchit.helloworld.tenant_profile.onCreate(tenant_profile.java:55) 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at android.support.v4.app.Fragment.performCreate(Fragment.java:1939) 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:988) 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at android.support.v4.app.FragmentManagerImpl.moveToState 
(FragmentManager.java:1207) 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572) 

01-29 08:04:13.233 1796-1796/? E/AndroidRuntime:  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493) 

请帮助

+0

当*应用程序停止工作*,那么我相信logcat中还有更多的东西。红色?我相信'pickImage'在这里是空的。 – Rohit5k2

+0

@ Rohit5k2我在上面添加了红色的logcat红线。请看一看 – logan

回答

0

请看看机器人的开发人员部分尤其是培训如何使用碎片及其lifecycle

甚至在布局变得膨胀之前,您尝试通过ID查找查看。

要解决您的问题,您可以比较关于调用onCreate和onCreateView顺序片段的生命周期。

ArticleFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.article_view, container, false); 
     //Get Button here 
     Button pickImage = (Button) view.findViewById(R.id.btn_pick); 
     //Set listener etc. 
     return view; 

    } 
} 

此外,我鼓励你设置你的pickImage作为一个成员变量,以便能够在比onCreateView更多的方法中使用它。