Я новичок в android и провожу некоторые исследования о viewpager
, activity
и fragment
, но моя проблема в том, что после того, как я сделал снимок, изображение не показывалось в layout
.
Вот код, где я делаю снимок:
public class MainStepView extends AppCompatActivity {
private StepperIndicator indicator;
private FloatingActionButton fabCapture;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stepview_main);
setTitle("New Customer");
indicator = (StepperIndicator) findViewById(R.id.stepper_indicator);
fabCapture = (FloatingActionButton) findViewById(R.id.fabCamera);
final ViewPager pager = findViewById(R.id.viewPager);
pager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
indicator.setViewPager(pager, true);
indicator.addOnStepClickListener(new StepperIndicator.OnStepClickListener() {
@Override
public void onStepClicked(int step) {
pager.setCurrentItem(step, true);
}
});
fabCapture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, indicator.getCurrentStep());
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK){
if(requestCode == 3){
Bundle bundle = data.getExtras();
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
final Bitmap bmp = (Bitmap) bundle.get("data");
bmp.compress(Bitmap.CompressFormat.PNG, 100, bStream);
byte[] byteArray = bStream.toByteArray();
ClientIdFragment fragment = new ClientIdFragment();
bundle.putByteArray("image", byteArray);
fragment.setArguments(bundle);
}
}
}
}
Вот код, где должно отображаться изображение
public class ClientIdFragment extends Fragment {
ImageView ivClientId;
FloatingActionButton fabCapture;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.stepview_client_id, container, false);
Bitmap bmp;
ivClientId = (ImageView) v.findViewById(R.id.ivClientId);
fabCapture = (FloatingActionButton) v.findViewById(R.id.fabCamera);
byte[] byteArray = null;
if (byteArray != null && byteArray.length > 0){
byteArray = getActivity().getIntent().getByteArrayExtra("image");
bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ivClientId.setImageBitmap(bmp);
}
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
ivClientId = (ImageView) view.findViewById(R.id.ivClientId);
}
}
Здесь я отображаю различные макеты:
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0: return new ClientInfoFragment();
case 1: return new ClientAddressFragment();
case 2: return new ClientOtherFragment();
case 3: return new ClientIdFragment();
case 4: return new ClientSelfieFragment();
case 5: return new ClientWithIdFragment();
case 6: return new ClientSignatureFragment();
default : return new ClientSummaryFragment();
}
}
@Override
public int getCount() {
return 9;
}
}
Вот мой сценарий: у меня есть 7 макетов, вызванных viewpager
с использованием stepperindicator
, прежде чем я сделаю снимок, я go планирую, где изображение будет отображаться и инициировать fab
затем, после того как я сделаю снимок, изображение не было отображено в макете
Примечание: изображение было сохранено в галерее. Спасибо за ваш ответ