Meine App nimmt ein Bild von der Kamera auf und zeigt es einer anderen Aktivität an. Außerdem müssen Daten von Firebase gespeichert und abgerufen werden.Wie kann ich verhindern, dass meine App nach der Kameraaufnahme abstürzt?
Aber App stürzt ab, nachdem das Bild aufgenommen wurde und klicken Sie auf OK von der Kamera. Auch gibt es keine Protokoll Katze Ausnahme ich bekomme. Was ist zu tun? // Unten ist die Aktivität in dem die Kamera aufgerufen wird:
HomeActivity.java
public class HomeActivity extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private static final int CAMERA_REQUEST = 1888;
private ViewPager mViewPager;
private File imageFile;
private Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
String timeStamp= new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName="IMAGE_"+timeStamp+"_";
//Adding Camera Intent when clicked on the FAB
@Override
public void onClick(View view) {
Intent cameraIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent,CAMERA_REQUEST);
}
});
}
//What Happens After the Image is Captured
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==CAMERA_REQUEST && resultCode==Activity.RESULT_OK){
Toast.makeText(this,"File saved to"+imageFile.getAbsolutePath(),Toast.LENGTH_LONG).show();
Intent intent=new Intent(HomeActivity.this,PostActivity.class);
Bitmap photo = (Bitmap) data.getExtras().get("data");
Uri uri=data.getData();
intent.putExtra("EXTRA_VALUE",photo);
intent.setData(uri);
startActivity(intent);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
SectionsPagerAdapter.java
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
AllPosts allposts=new AllPosts();
return allposts;
case 1:
MyPosts myposts=new MyPosts();
return myposts;
default:
return null;
}
}
@Override
public int getCount() {
// Show 2 total pages.
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "All Posts";
case 1:
return "My Posts";
}
return null;
}
}
}
Hier ist der Code, wo das Bild sollte
in Imageview angezeigt werdenPostActivity.java
public class PostActivity extends Activity {
private ImageButton mImageSelect;
private EditText postTitle;
private EditText postDescription;
private Button submitButton;
private TextView changeImage;
private Uri imageUri=null;
private StorageReference storage;
private ProgressDialog progressDialogue;
private DatabaseReference database;
public String titleVal;
public String descriptionVal;
private ImageView mImageView;
private static final int GALLERY_REQUEST=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
storage= FirebaseStorage.getInstance().getReference();
database= FirebaseDatabase.getInstance().getReference().child("Posts");
mImageView=(ImageView) findViewById(R.id.imageView);
postTitle=(EditText) findViewById(R.id.titleField);
postDescription=(EditText)findViewById(R.id.descriptionField);
submitButton=(Button) findViewById(R.id.submitPost);
progressDialogue=new ProgressDialog(this);
Intent intent=getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("EXTRA_VALUE");
imageUri=getIntent().getData();
mImageView.setImageBitmap(bitmap);
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startPosting();
}
});
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("titleVal", titleVal);
outState.putString("descriptionVal",descriptionVal);
}
private void startPosting() {
titleVal=postTitle.getText().toString().trim();
descriptionVal=postDescription.getText().toString().trim();
if(!TextUtils.isEmpty(titleVal) && !TextUtils.isEmpty(descriptionVal) && imageUri!=null){
progressDialogue.setMessage("আপলোড হচ্ছে......");
progressDialogue.show();
StorageReference filePath=storage.child("post_images").child(imageUri.getLastPathSegment());
filePath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl=taskSnapshot.getDownloadUrl();
Picasso.with(PostActivity.this).load(downloadUrl).into(mImageView);
DatabaseReference newPost=database.push();
newPost.child("title").setValue(titleVal);
newPost.child("description").setValue(descriptionVal);
newPost.child("image").setValue(downloadUrl.toString());
progressDialogue.dismiss();
Toast.makeText(getApplicationContext(), "Successfully Uploaded", Toast.LENGTH_LONG).show();
startActivity(new Intent(PostActivity.this,HomeActivity.class));
}
});
}else{
Toast.makeText(getApplicationContext(), "Please provide a Title", Toast.LENGTH_LONG).show();
}
}
}
überprüfen Sie bitte, dass 'data' is not null ist. 'if (data! = null)' {// Code hier eingeben} –
@AnkitaShah Ich schätze, du sprichst über diese Codezeile: if (! TextUtils.isEmpty (titleVal) &&! TextUtils.isEmpty (descriptionVal) && imageUri! = null) // Aber ich finde nichts falsch daran. Warum denkst du, dass es ein Problem geben könnte? –
@Shoumma Rauth: Ich spreche von onActivityResult(). Sie verwenden Datenparameter. Bevor Sie es verwenden, überprüfen Sie, ob es null ist oder nicht. –