我在使用我的简单应用程序时遇到了一些麻烦。该应用程序从MainActivity开始,您可以在其中按相机图标。这打开了一个暗中的意图拍照。拍摄照片时,将打开另一个活动DisplayImageActivity。该活动由两部分组成:一部分包含用于显示照片的ImageView,另一部分包含一些用于显示照片(文件名,大小,位置等)信息的TextView。我使用ViewPager具有水平滑动功能。将字符串发送到活动,然后发送到活动的片段
现在来解决问题。我应该注意到,这不是一个一致的问题。有时候应用程序崩溃,有时候它运行得很好。问题在于从MainActivity中的onActivityResult获取图像路径到两个片段,以便我可以获取图像和信息。这里是我的onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 42 && resultCode == RESULT_OK) {
Log.d(TAG, "MainActivity onActivityResult method called.");
Intent intentShowPicture = new Intent(this, DisplayImageActivity.class);
intentShowPicture.putExtra(PICTURE_KEY, imgPath);
startActivity(intentShowPicture);
}
}
所以我只是把图片的路径,我从拍摄照片的包拿到并开始DisplayImageActivity。然后在我的DisplayImageActivity,我这样做:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_image);
Log.d(MainActivity.TAG, "DisplayImageActivity onCreate called.");
imgPath = getIntent().getExtras().getString(MainActivity.PICTURE_KEY);
mAdapter = new FragmentAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mAdapter);
然后我有只返回straing imgPath的方法:
public String getImgPath() {
return imgPath;
}
然后将片段内(PictureFragment)我尝试找回这样的imgPath :
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
DisplayImageActivity activity = (DisplayImageActivity) getActivity();
imgPath = activity.getImgPath();
但正如我前面提到的,有时getImgPath
方法只是返回null,应用程序崩溃,当我尝试找回照片。但有时它可以正常工作。我有点失落,为什么这是。是否因为在DisplayImageActivity中分配了imgPath变量之前有时构造了片段,因此该变量仅为null?
我有点新来android,所以这可能不是最好的方法。我只是从头顶上做的。任何想法为什么发生这种情况?
如何将您的字符串存储在共享首选项中 –