He clonado este git depo es una aplicación que te permite capturar o elegir imágenes y guardarlas en un documento pdf

Funciona bien, pero cuando traté de integrarme en mi módulo de aplicación (nuevo proyecto) e hice clic en el botón para iniciar la actividad, se bloqueó. No he cambiado nada, Logcat tampoco está ayudando ...

¿Alguna idea?

Nota: Ya agregué la actividad en mi manifiesto.

Editar: agregué el estilo y el diseño a continuación

estilos

<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Actividad_pdf

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.nabeeltech.capturedoc.imgtopdf.PdfActivity">

<Button
    android:id="@+id/btnPdf"
    android:layout_width="match_parent"
    android:layout_margin="16dp"
    android:text="Generate Document"
    android:layout_height="wrap_content" />
  </LinearLayout>

PdfActivity

 Button btn_Pdf = findViewById(R.id.btnPdf);
    activity = this;
       filename=new Date().toString();
    btn_Pdf.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getImages();
        }
    });
}

private void getImages() {
    Config config = new Config();
    config.setToolbarTitleRes(R.string.str_bar_tool);
    ImagePickerActivity.setConfig(config);
    Intent intent = new Intent(this, ImagePickerActivity.class);
    startActivityForResult(intent, INTENT_REQUEST_GET_IMAGES);
}

@Override
protected void onActivityResult(int requestCode, int resuleCode, Intent intent) {
    super.onActivityResult(requestCode, resuleCode, intent);

    if (requestCode == INTENT_REQUEST_GET_IMAGES && resuleCode == Activity.RESULT_OK) {
        ArrayList<Uri> image_uris = intent.getParcelableArrayListExtra(ImagePickerActivity.EXTRA_IMAGE_URIS);

        if(image_uris.size()!=0){
            ArrayList<String> tempUris = new ArrayList<>();
            for (Uri uri : image_uris) {
                tempUris.add(uri.getPath());
            }

            CallBackCreatePdf callBackCreatePdf = new CallBackCreatePdf() {
                @Override
                public void OnCallBackCreatePdf(String tPath) {
                    if(tPath!=""){
                     Toast.makeText(getBaseContext(),"Pdf Created", Toast.LENGTH_LONG).show();

                    }else{
                        Toast.makeText(getBaseContext(),"Error creating PDF", Toast.LENGTH_LONG).show();
                    }

                }
            };

            MaterialDialog.Builder builder = new MaterialDialog.Builder(activity)
                    .title("Creating PDF")
                    .content("just a moment ...")
                    .cancelable(false)
                    .progress(true, 0);
            MaterialDialog dialog = builder.build();

            AsynCreatePdf asynCreatePdf = new AsynCreatePdf(activity,callBackCreatePdf,dialog,tempUris,"1",("pdf"+(new Date()).getSeconds()));

            asynCreatePdf.execute();
        }

        Log.d(LOG_ACTIVITY, "onActivityResult");

    }
}

Aquí está el seguimiento de la pila

2020-02-05 16:44:36.884 17311-17311/com.nabeeltech.capturedoc E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.nabeeltech.capturedoc, PID: 17311
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nabeeltech.capturedoc/com.gun0912.tedpicker.ImagePickerActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
    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:2016)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
 Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
    at androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:421)
    at androidx.appcompat.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:150)
    at com.gun0912.tedpicker.ImagePickerActivity.initView(ImagePickerActivity.java:95)
    at com.gun0912.tedpicker.ImagePickerActivity.onCreate(ImagePickerActivity.java:82)
    at android.app.Activity.performCreate(Activity.java:7802)
    at android.app.Activity.performCreate(Activity.java:7791)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
    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:2016) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7356) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
1
Ishak Benaissa 5 feb. 2020 a las 19:02

2 respuestas

La mejor respuesta

Esta actividad ya tiene una barra de acción proporcionada por la decoración de la ventana. No solicite Window.FEATURE_SUPPORT_ACTION_BAR y establezca windowActionBar en false en su tema para usar una barra de herramientas en su lugar. en androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar (AppCompatDelegateImpl.java:421)

Necesito otro tema. Al principio ir a manifestar

<activity android:name=".ImagePickerActivity"
            android:theme="@style/CustomTheme"
            android:screenOrientation="portrait"
            />

Luego, vaya a la sección res / values / styles.xml . Crear tema Tu tema será

<style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
3
IntelliJ Amiya 5 feb. 2020 a las 16:21

Fijo. Gracias a @ intellij-amiya

Extrañé otro estilo. Yo estaba usando

<activity android:name="com.nabeeltech.capturedoc.imgtopdf.PdfActivity"
            android:label="@string/title_activity_pdf"
            android:theme="@style/MyAppTheme"/>

        <activity android:name="com.gun0912.tedpicker.ImagePickerActivity"
            android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
            android:screenOrientation="portrait"
            />

Así que reemplacé ImagePickerActivity con

android:theme="@style/AppTheme_picker"

Ahora funciona.

1
Ishak Benaissa 5 feb. 2020 a las 16:30