2017-05-22 4 views
0

Ich versuche, Fresko Bildbetrachter zu verwenden, Aber ich diese Störung erhalte, wenn Klick-Listener ausgeführt wird, wirdFrescoImageViewer: java.lang.IllegalStateException: Sie benötigen ein Theme.AppCompat Thema verwenden

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:355) 
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:324) 
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:285) 
at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:83) 
at android.support.v7.app.AlertController.installContent(AlertController.java:225) 
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257) 
at android.app.Dialog.dispatchOnCreate(Dialog.java:397) 
at android.app.Dialog.show(Dialog.java:298) 
at com.stfalcon.frescoimageviewer.ImageViewer.show(ImageViewer.java:61) 
at com.stfalcon.frescoimageviewer.ImageViewer$Builder.show(ImageViewer.java:435) 
at com.unobridge.www.unobridgepartner.view.service_detail.adapters.QueryImageGalleryAdapter$1.onClick(QueryImageGalleryAdapter.java:67) 
at android.view.View.performClick(View.java:5207) 
at android.view.View$PerformClick.run(View.java:21177) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5441) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 

und-Code in Adapter, hat Adapter den Kontext der Aktivität, was wiederum zu FrescoImageViewer geführt wird:

holder.simpleDraweeView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d(TAG, holder.getAdapterPosition()+" "); 
      new ImageViewer.Builder<>(context,fileMaps) 
        .setFormatter(new ImageViewer.Formatter<FileMap>(){ 
         @Override 
         public String format(FileMap fileMap) { 
          return fileMap.getUrls().get(0).getUrl(); 
         } 
        }) 
        .show(); 
     } 
    }); 

Aktivität Code:

package com.unobridge.www.unobridgepartner.view.service_detail.activities; 

import android.content.Context; 
import android.content.Intent; 
import android.databinding.DataBindingUtil; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.DefaultItemAnimator; 
import android.support.v7.widget.GridLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.MenuItem; 

import com.facebook.drawee.backends.pipeline.Fresco; 
import com.unobridge.www.unobridgepartner.R; 
import com.unobridge.www.unobridgepartner.databinding.ActivityQueryImageGalleryBinding; 
import com.unobridge.www.unobridgepartner.model.FileMap; 
import com.unobridge.www.unobridgepartner.model.Ticket; 
import com.unobridge.www.unobridgepartner.view.service_detail.adapters.QueryImageGalleryAdapter; 
import com.unobridge.www.unobridgepartner.viewmodel.service_detail.activities.QueryImageGalleryViewModel; 

import java.util.List; 

public class QueryImageGalleryActivity extends AppCompatActivity { 

    private static final String TICKET_DATA = "ticket_data"; 
    private ActivityQueryImageGalleryBinding binding; 
    private QueryImageGalleryViewModel queryImageGalleryViewModel; 
    private QueryImageGalleryAdapter queryImageGalleryAdapter; 

    private List<FileMap> fileMaps; 

    public static Intent newIntent(Context context, Ticket ticket){ 
     Intent intent = new Intent(context, QueryImageGalleryActivity.class); 
     intent.putExtra(TICKET_DATA, ticket); 
     return intent; 
    } 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Ticket ticket = getIntent().getParcelableExtra(TICKET_DATA); 


     binding = DataBindingUtil.setContentView(this, R.layout.activity_query_image_gallery); 
     queryImageGalleryViewModel = new QueryImageGalleryViewModel(getApplicationContext(), ticket); 
     binding.setViewModel(queryImageGalleryViewModel); 

     queryImageGalleryAdapter = new QueryImageGalleryAdapter(getApplicationContext(), ticket.getQueryImages()); 

     Fresco.initialize(this); 

     RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(), 2); 
     binding.queryImageRecyclerView.setLayoutManager(layoutManager); 
     binding.queryImageRecyclerView.setItemAnimator(new DefaultItemAnimator()); 
     binding.queryImageRecyclerView.setAdapter(queryImageGalleryAdapter); 


     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setTitle("Query Image Gallery"); 


    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       super.onBackPressed(); 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Post mit dem Code Ihrer Aktivität –

+0

@SushobhNadiger Hinzugefügt bitte unter –

+0

Nein, ich meinte die gesamte Aktivität. Weil die Elternklasse Ihrer Aktivität das Problem bestimmen könnte. –

Antwort

2

Sie müssen die AppCompatActivity Themen Rahmen der Tätigkeit gesetzt verwenden, die es Ihre Anwendung scheint nicht

Ersetzen Sie alle getApplicationContext() mit QueryImageGalleryActivity.this (die aktuelle Aktivität/Kontext)

+0

@ criclet_007 Ich bin die gleiche Bildansicht in Recycling-Ansicht implementieren den gleichen Fehler nur diese Ansicht zu erhalten layout no bisher noch nichts –

+0

@Mehul bitte einen neuen Beitrag erstellen –

Verwandte Themen