我在使用我的簡單應用程序時遇到了一些麻煩。該應用程序從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,所以這可能不是最好的方法。我只是從頭頂上做的。任何想法爲什麼發生這種情況?
如何將您的字符串存儲在共享首選項中 –