Create -Android studio 出现错误

发布于 2025-01-17 04:14:39 字数 22504 浏览 0 评论 0原文

我不知道为什么我会收到错误。我是编程新手。这是我在 logcat 和 java 代码中的错误。 147 线上有错误,但我没有发现任何可疑的东西。请有人告诉我问题是什么,因为我是 android studio 和 java 语言的新手。

Error logcat:
2022-03-27 09:47:26.285 14374-14374/com.example.journeyjournalfinal E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.journeyjournalfinal, PID: 14374
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.journeyjournalfinal/com.example.journeyjournalfinal.AddItemJournal}: android.view.InflateException: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Error inflating class androidx.fragment.app.FragmentContainerView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: android.view.InflateException: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Error inflating class androidx.fragment.app.FragmentContainerView
     Caused by: android.view.InflateException: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Error inflating class androidx.fragment.app.FragmentContainerView
     Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
        at com.google.maps.api.android.lib6.drd.p.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):6)
        at com.google.maps.api.android.lib6.auth.f.i(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):1)
        at com.google.maps.api.android.lib6.impl.l.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):24)
        at com.google.android.gms.maps.internal.CreatorImpl.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):7)
        at com.google.android.gms.maps.internal.CreatorImpl.logInitialization(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):3)
        at com.google.android.gms.maps.internal.g.aX(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):3)
        at dz.onTransact(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):4)
        at android.os.Binder.transact(Binder.java:1043)
        at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.0.0:2)
        at com.google.android.gms.maps.internal.zze.zzl(com.google.android.gms:play-services-maps@@18.0.0:4)
        at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.0.0:12)
        at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.0.0:1)
        at com.google.android.gms.maps.zzav.zzc(com.google.android.gms:play-services-maps@@18.0.0:2)
        at com.google.android.gms.maps.zzav.createDelegate(com.google.android.gms:play-services-maps@@18.0.0:1)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.0.1:6)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(com.google.android.gms:play-services-base@@18.0.1:1)
        at com.google.android.gms.maps.SupportMapFragment.onCreate(com.google.android.gms:play-services-maps@@18.0.0:5)
        at androidx.fragment.app.Fragment.performCreate(Fragment.java:2949)
2022-03-27 09:47:26.288 14374-14374/com.example.journeyjournalfinal E/AndroidRuntime:     at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:475)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:278)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106)
        at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971)
        at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311)
        at androidx.fragment.app.FragmentContainerView.<init>(FragmentContainerView.java:180)
        at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:52)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:319)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:298)
        at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1067)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:995)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:455)
        at android.app.Dialog.setContentView(Dialog.java:569)
        at com.example.journeyjournalfinal.AddItemJournal.onCreate(AddItemJournal.java:148)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

爪哇: 包 com.example.journeyjournalfinal;

import android.Manifest;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatButton;
import androidx.appcompat.widget.AppCompatImageButton;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.app.ActivityCompat;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;

import java.io.InputStream;
import java.util.Calendar;
import java.util.Random;

public class AddItemJournal extends AppCompatActivity {

    AppCompatImageView addJournalImageV;
    AppCompatImageButton btnAddJournalImage;
    TextInputEditText txtEditDateAddJournal, txtEditTitleAddJournal, txtEditDescriptionAddJournal, txtEditLocationAddJournal;
    AppCompatButton btnSubmitAddJournal;
    Uri imagePath;
    Bitmap bitmap;

    SupportMapFragment supportMapFragment;
    FusedLocationProviderClient fusedLocationProviderClient;
    Dialog mapDialog;

    String uid;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_item_journal);


        //uid from dashboard
        uid = getIntent().getStringExtra("uid");


        //display picture in Image-View
        addJournalImageV = findViewById(R.id.addJournalImageV);
        btnAddJournalImage = findViewById(R.id.btnAddJournalImage);

        btnAddJournalImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dexter.withActivity(AddItemJournal.this)
                        .withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
                        .withListener(new PermissionListener() {
                            @Override
                            public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {

                                Intent intent = new Intent(Intent.ACTION_PICK);
                                intent.setType("image/*");
                                startActivityForResult(Intent.createChooser(intent, "Select Image File"), 1);

                            }

                            @Override
                            public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {

                            }

                            @Override
                            public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {

                                permissionToken.continuePermissionRequest();
                            }
                        }).check();
            }
        });


        //Setting up DatePicker on EditText
        txtEditDateAddJournal = findViewById(R.id.txtEditDateAddJournal);
        txtEditDateAddJournal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                final Calendar calendar = Calendar.getInstance();
                int year = calendar.get(Calendar.YEAR);
                int month= calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);

                //Date Picker Dialog

                DatePickerDialog datePickerDialog = new DatePickerDialog(AddItemJournal.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {

                        txtEditDateAddJournal.setText((month+1) +"-"+ dayOfMonth+ "-" +year );

                    }
                }, year, month, day);
                datePickerDialog.show();


            }
        });


        //implementing map for location

        txtEditLocationAddJournal = findViewById(R.id.txtEditLocationAddJournal);

        mapDialog = new Dialog(this);
//        mapDialog=findViewById(R.id.btnLogin);
        mapDialog.setContentView(R.layout.map_dialog);
        mapDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        mapDialog.setCancelable(true);

        txtEditLocationAddJournal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                supportMapFragment = (SupportMapFragment)
                        getSupportFragmentManager().findFragmentById(R.id.fragMap);
                fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getApplicationContext());

                Dexter.withContext(getApplicationContext())
                        .withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
                        .withListener(new PermissionListener() {
                            @Override
                            public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {

                                getMapLocation();

                            }

                            @Override
                            public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {

                            }

                            @Override
                            public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {

                                permissionToken.continuePermissionRequest();
                            }
                        }).check();

                mapDialog.show();

            }
        });


        //Uploading data to firebase
        btnSubmitAddJournal = findViewById(R.id.btnSubmitAddJournal);

        btnSubmitAddJournal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                uploadDataFirebase();
            }
        });

    }


    //loading Image in Image-view

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK){
            imagePath = data.getData();
            try {
                InputStream inputStream = getContentResolver().openInputStream(imagePath);
                bitmap = BitmapFactory.decodeStream(inputStream);
                addJournalImageV.setImageBitmap(bitmap);

            }catch (Exception e){

            }
        }

    }


    //getting Location using Map

    private void getMapLocation()
    {

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        Task<Location> task = fusedLocationProviderClient.getLastLocation();
        task.addOnSuccessListener(new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                supportMapFragment.getMapAsync(new OnMapReadyCallback() {
                    @Override
                    public void onMapReady(GoogleMap googleMap) {
                        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                        MarkerOptions markerOptions = new MarkerOptions();
                        markerOptions.position(latLng);
                        googleMap.addMarker(markerOptions);
                        markerOptions.title(latLng.latitude + " : "+ latLng.longitude);
                        txtEditLocationAddJournal.setText(String.valueOf(location.getLatitude()) + " , " + String.valueOf(location.getLongitude()));
                        googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
                        googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
                            @Override
                            public void onMapClick(LatLng latLng) {

                                markerOptions.position(new LatLng(location.getLatitude(), location.getLongitude()));

                                txtEditLocationAddJournal.setText(String.valueOf(latLng.latitude) + " , " + String.valueOf(latLng.longitude));

                                googleMap.clear();
                                googleMap.addMarker(new MarkerOptions().position(latLng));

                            }
                        });
                    }
                });
            }
        });

    }


    private void uploadDataFirebase() {

        ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("File Uploader");
        progressDialog.show();

        txtEditDateAddJournal = findViewById(R.id.txtEditDateAddJournal);
        txtEditTitleAddJournal = findViewById(R.id.txtEditTitleAddJournal);
        txtEditDescriptionAddJournal = findViewById(R.id.txtEditDescriptionAddJournal);
        txtEditLocationAddJournal =findViewById(R.id.txtEditLocationAddJournal);

        FirebaseStorage firebaseStorage = FirebaseStorage.getInstance();
        final StorageReference storageReference = firebaseStorage.getReference("Image1" +new Random().nextInt(60));

        storageReference.putFile(imagePath)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                        progressDialog.dismiss();

                        storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                dataholderadditemjournal obj = new dataholderadditemjournal(txtEditTitleAddJournal.getText().toString(),
                                        txtEditDescriptionAddJournal.getText().toString(),
                                        txtEditLocationAddJournal.getText().toString(),
                                        uri.toString(),
                                        txtEditDateAddJournal.getText().toString());


                                FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
                                DatabaseReference databaseReference = firebaseDatabase.getReference("JournalEntry").child(uid);
                                databaseReference.push().setValue(obj);


                                txtEditDateAddJournal.setText("");
                                txtEditTitleAddJournal.setText("");
                                txtEditDescriptionAddJournal.setText("");
                                txtEditLocationAddJournal.setText("");
                                addJournalImageV.setImageResource(R.drawable.ic_launcher_background);

                                Toast.makeText(getApplicationContext(), "Uploaded", Toast.LENGTH_SHORT).show();

                            }
                        });

                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {

                        float percent = (100* snapshot.getBytesTransferred())/snapshot.getTotalByteCount();
                        progressDialog.setMessage("Uploaded : " + (int)percent);

                    }
                });

    }
}

I have no idea why i'm getting error. I'm new in programming. This is my error in logcat and java code. There had been error on 147 line but i doesnt find any suspious things there. plz somebody tell me what is the problem coz im new-bie in android studio and java language.

Error logcat:
2022-03-27 09:47:26.285 14374-14374/com.example.journeyjournalfinal E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.journeyjournalfinal, PID: 14374
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.journeyjournalfinal/com.example.journeyjournalfinal.AddItemJournal}: android.view.InflateException: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Error inflating class androidx.fragment.app.FragmentContainerView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: android.view.InflateException: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Error inflating class androidx.fragment.app.FragmentContainerView
     Caused by: android.view.InflateException: Binary XML file line #7 in com.example.journeyjournalfinal:layout/map_dialog: Error inflating class androidx.fragment.app.FragmentContainerView
     Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
        at com.google.maps.api.android.lib6.drd.p.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):6)
        at com.google.maps.api.android.lib6.auth.f.i(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):1)
        at com.google.maps.api.android.lib6.impl.l.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):24)
        at com.google.android.gms.maps.internal.CreatorImpl.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):7)
        at com.google.android.gms.maps.internal.CreatorImpl.logInitialization(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):3)
        at com.google.android.gms.maps.internal.g.aX(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):3)
        at dz.onTransact(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (150700-0):4)
        at android.os.Binder.transact(Binder.java:1043)
        at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.0.0:2)
        at com.google.android.gms.maps.internal.zze.zzl(com.google.android.gms:play-services-maps@@18.0.0:4)
        at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.0.0:12)
        at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.0.0:1)
        at com.google.android.gms.maps.zzav.zzc(com.google.android.gms:play-services-maps@@18.0.0:2)
        at com.google.android.gms.maps.zzav.createDelegate(com.google.android.gms:play-services-maps@@18.0.0:1)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.0.1:6)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(com.google.android.gms:play-services-base@@18.0.1:1)
        at com.google.android.gms.maps.SupportMapFragment.onCreate(com.google.android.gms:play-services-maps@@18.0.0:5)
        at androidx.fragment.app.Fragment.performCreate(Fragment.java:2949)
2022-03-27 09:47:26.288 14374-14374/com.example.journeyjournalfinal E/AndroidRuntime:     at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:475)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:278)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106)
        at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971)
        at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311)
        at androidx.fragment.app.FragmentContainerView.<init>(FragmentContainerView.java:180)
        at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:52)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:319)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:298)
        at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1067)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:995)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:455)
        at android.app.Dialog.setContentView(Dialog.java:569)
        at com.example.journeyjournalfinal.AddItemJournal.onCreate(AddItemJournal.java:148)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Java:
package com.example.journeyjournalfinal;

import android.Manifest;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatButton;
import androidx.appcompat.widget.AppCompatImageButton;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.app.ActivityCompat;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;

import java.io.InputStream;
import java.util.Calendar;
import java.util.Random;

public class AddItemJournal extends AppCompatActivity {

    AppCompatImageView addJournalImageV;
    AppCompatImageButton btnAddJournalImage;
    TextInputEditText txtEditDateAddJournal, txtEditTitleAddJournal, txtEditDescriptionAddJournal, txtEditLocationAddJournal;
    AppCompatButton btnSubmitAddJournal;
    Uri imagePath;
    Bitmap bitmap;

    SupportMapFragment supportMapFragment;
    FusedLocationProviderClient fusedLocationProviderClient;
    Dialog mapDialog;

    String uid;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_item_journal);


        //uid from dashboard
        uid = getIntent().getStringExtra("uid");


        //display picture in Image-View
        addJournalImageV = findViewById(R.id.addJournalImageV);
        btnAddJournalImage = findViewById(R.id.btnAddJournalImage);

        btnAddJournalImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dexter.withActivity(AddItemJournal.this)
                        .withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
                        .withListener(new PermissionListener() {
                            @Override
                            public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {

                                Intent intent = new Intent(Intent.ACTION_PICK);
                                intent.setType("image/*");
                                startActivityForResult(Intent.createChooser(intent, "Select Image File"), 1);

                            }

                            @Override
                            public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {

                            }

                            @Override
                            public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {

                                permissionToken.continuePermissionRequest();
                            }
                        }).check();
            }
        });


        //Setting up DatePicker on EditText
        txtEditDateAddJournal = findViewById(R.id.txtEditDateAddJournal);
        txtEditDateAddJournal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                final Calendar calendar = Calendar.getInstance();
                int year = calendar.get(Calendar.YEAR);
                int month= calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);

                //Date Picker Dialog

                DatePickerDialog datePickerDialog = new DatePickerDialog(AddItemJournal.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {

                        txtEditDateAddJournal.setText((month+1) +"-"+ dayOfMonth+ "-" +year );

                    }
                }, year, month, day);
                datePickerDialog.show();


            }
        });


        //implementing map for location

        txtEditLocationAddJournal = findViewById(R.id.txtEditLocationAddJournal);

        mapDialog = new Dialog(this);
//        mapDialog=findViewById(R.id.btnLogin);
        mapDialog.setContentView(R.layout.map_dialog);
        mapDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        mapDialog.setCancelable(true);

        txtEditLocationAddJournal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                supportMapFragment = (SupportMapFragment)
                        getSupportFragmentManager().findFragmentById(R.id.fragMap);
                fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getApplicationContext());

                Dexter.withContext(getApplicationContext())
                        .withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
                        .withListener(new PermissionListener() {
                            @Override
                            public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {

                                getMapLocation();

                            }

                            @Override
                            public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {

                            }

                            @Override
                            public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {

                                permissionToken.continuePermissionRequest();
                            }
                        }).check();

                mapDialog.show();

            }
        });


        //Uploading data to firebase
        btnSubmitAddJournal = findViewById(R.id.btnSubmitAddJournal);

        btnSubmitAddJournal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                uploadDataFirebase();
            }
        });

    }


    //loading Image in Image-view

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK){
            imagePath = data.getData();
            try {
                InputStream inputStream = getContentResolver().openInputStream(imagePath);
                bitmap = BitmapFactory.decodeStream(inputStream);
                addJournalImageV.setImageBitmap(bitmap);

            }catch (Exception e){

            }
        }

    }


    //getting Location using Map

    private void getMapLocation()
    {

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        Task<Location> task = fusedLocationProviderClient.getLastLocation();
        task.addOnSuccessListener(new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                supportMapFragment.getMapAsync(new OnMapReadyCallback() {
                    @Override
                    public void onMapReady(GoogleMap googleMap) {
                        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                        MarkerOptions markerOptions = new MarkerOptions();
                        markerOptions.position(latLng);
                        googleMap.addMarker(markerOptions);
                        markerOptions.title(latLng.latitude + " : "+ latLng.longitude);
                        txtEditLocationAddJournal.setText(String.valueOf(location.getLatitude()) + " , " + String.valueOf(location.getLongitude()));
                        googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
                        googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
                            @Override
                            public void onMapClick(LatLng latLng) {

                                markerOptions.position(new LatLng(location.getLatitude(), location.getLongitude()));

                                txtEditLocationAddJournal.setText(String.valueOf(latLng.latitude) + " , " + String.valueOf(latLng.longitude));

                                googleMap.clear();
                                googleMap.addMarker(new MarkerOptions().position(latLng));

                            }
                        });
                    }
                });
            }
        });

    }


    private void uploadDataFirebase() {

        ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("File Uploader");
        progressDialog.show();

        txtEditDateAddJournal = findViewById(R.id.txtEditDateAddJournal);
        txtEditTitleAddJournal = findViewById(R.id.txtEditTitleAddJournal);
        txtEditDescriptionAddJournal = findViewById(R.id.txtEditDescriptionAddJournal);
        txtEditLocationAddJournal =findViewById(R.id.txtEditLocationAddJournal);

        FirebaseStorage firebaseStorage = FirebaseStorage.getInstance();
        final StorageReference storageReference = firebaseStorage.getReference("Image1" +new Random().nextInt(60));

        storageReference.putFile(imagePath)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                        progressDialog.dismiss();

                        storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                dataholderadditemjournal obj = new dataholderadditemjournal(txtEditTitleAddJournal.getText().toString(),
                                        txtEditDescriptionAddJournal.getText().toString(),
                                        txtEditLocationAddJournal.getText().toString(),
                                        uri.toString(),
                                        txtEditDateAddJournal.getText().toString());


                                FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
                                DatabaseReference databaseReference = firebaseDatabase.getReference("JournalEntry").child(uid);
                                databaseReference.push().setValue(obj);


                                txtEditDateAddJournal.setText("");
                                txtEditTitleAddJournal.setText("");
                                txtEditDescriptionAddJournal.setText("");
                                txtEditLocationAddJournal.setText("");
                                addJournalImageV.setImageResource(R.drawable.ic_launcher_background);

                                Toast.makeText(getApplicationContext(), "Uploaded", Toast.LENGTH_SHORT).show();

                            }
                        });

                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {

                        float percent = (100* snapshot.getBytesTransferred())/snapshot.getTotalByteCount();
                        progressDialog.setMessage("Uploaded : " + (int)percent);

                    }
                });

    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文