2017-12-09 1 views
1

Wenn ich auf Freigabe Symbol klicken, dann Anwendung gestoppt und es zeigt keinen Fehler in Logcat, nur fünf Zeilen, die für mich nicht wie ein Fehler scheint. Außerdem gibt es 5 Fragmente, wenn ich Fragment 4 nach dem Öffnen der App öffne, es hat aufgehört, aber wenn ich zu Fragment 2 dann 3 dann 5 gehe, hört es nicht auf. Sogar meine MinSdkVersion 15 und TargetSdkVersion 18, meine App läuft nicht, es ist in den meisten Geräten gestoppt.App aufhören zu arbeiten ohne Fehler und Mischen von Versionen Problem

Es gibt eine Warnung zeigt in gradle (Modul: App) auf AppCompat

all com.android.support libraries must use the exact same version found versions 26.1.0, 25.2.0 

Das ist mein gradle

apply plugin: 'com.android.application' 
apply plugin: 'realm-android' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.2" 
    defaultConfig { 
     applicationId "com.balrajarpit.balrajarpit" 
     minSdkVersion 15 
     targetSdkVersion 18 
     versionCode 2 
     versionName "1.1" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     vectorDrawables.useSupportLibrary = true 
     multiDexEnabled = true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     dexOptions { 
      javaMaxHeapSize "4g" 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

    compile 'com.android.support:appcompat-v7:26.+' 
    compile 'com.android.support:design:26.+' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.android.support:recyclerview-v7:26.+' 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    compile 'com.android.support:cardview-v7:26.+' 
    compile 'com.android.support:support-vector-drawable:26.+' 
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 
    compile 'com.android.support:support-v4:26.+' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.mcxiaoke.volley:library:1.0.19' 
    compile 'com.google.code.gson:gson:2.2.4' 
    compile 'com.google.android.gms:play-services:11.+' 

    compile('com.squareup.retrofit2:retrofit:2.0.0-beta4') { 
     exclude module: 'okhttp' 
    } 
    compile 'com.squareup.okhttp3:okhttp:3.2.0' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1' 
    compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
    compile 'com.squareup.picasso:picasso:2.5.2' 

    // ripple effect library 
    compile 'com.balysv:material-ripple:1.0.2' 
    testCompile 'junit:junit:4.12' 
} 
apply plugin: 'com.google.gms.google-services' 

Aktivität

import android.app.Dialog; 
import android.content.Intent; 
import android.graphics.Color; 
import android.graphics.PorterDuff; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.os.Handler; 
import android.support.design.widget.Snackbar; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.app.ActivityOptionsCompat; 
import android.support.v4.view.ViewCompat; 
import android.support.v4.widget.SwipeRefreshLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.support.v7.widget.Toolbar; 
import android.text.Html; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.balysv.materialripple.MaterialRippleLayout; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 
import com.balrajarpit.balrajarpit.adapter.AdapterComments; 
import com.balrajarpit.balrajarpit.connection.API; 
import com.balrajarpit.balrajarpit.connection.RestAdapter; 
import com.balrajarpit.balrajarpit.connection.callbacks.CallbackDetailsPost; 
import com.balrajarpit.balrajarpit.data.AppConfig; 
import com.balrajarpit.balrajarpit.data.Constant; 
import com.balrajarpit.balrajarpit.data.SharedPref; 
import com.balrajarpit.balrajarpit.model.Comment; 
import com.balrajarpit.balrajarpit.model.Post; 
import com.balrajarpit.balrajarpit.realm.RealmController; 
import com.balrajarpit.balrajarpit.utils.NetworkCheck; 
import com.balrajarpit.balrajarpit.utils.Tools; 

import java.util.List; 

import retrofit2.Call; 
import retrofit2.Callback; 
import retrofit2.Response; 

public class ActivityPostDetails extends AppCompatActivity { 

    public static final String EXTRA_OBJC = "key.EXTRA_OBJC"; 
    public static final String EXTRA_NOTIF = "key.EXTRA_NOTIF"; 

    // give preparation animation activity transition 
    public static void navigate(AppCompatActivity activity, View transitionView, Post obj) { 
     Intent intent = new Intent(activity, ActivityPostDetails.class); 
     intent.putExtra(EXTRA_OBJC, obj); 
     ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, EXTRA_OBJC); 
     ActivityCompat.startActivity(activity, intent, options.toBundle()); 
    } 

    private Toolbar toolbar; 
    private ActionBar actionBar; 
    private View parent_view; 
    private MenuItem read_later_menu; 
    private SwipeRefreshLayout swipe_refresh; 

    // extra obj 
    private Post post; 
    private boolean from_notif; 

    private SharedPref sharedPref; 
    private boolean flag_read_later; 
    private Call<CallbackDetailsPost> callbackCall = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_post_details); 
     parent_view = findViewById(android.R.id.content); 
     swipe_refresh = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); 
     sharedPref = new SharedPref(this); 

     // animation transition 
     ViewCompat.setTransitionName(findViewById(R.id.image), EXTRA_OBJC); 

     // get extra object 
     post = (Post) getIntent().getSerializableExtra(EXTRA_OBJC); 
     from_notif = getIntent().getBooleanExtra(EXTRA_NOTIF, false); 
     initToolbar(); 

     displayPostData(true); 
     prepareAds(); 

     if (post.isDraft()) requestAction(); 

     // on swipe 
     swipe_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       requestAction(); 
      } 
     }); 

     // get enabled controllers 
     Tools.requestInfoApi(this); 

     // analytics tracking 
     ThisApplication.getInstance().trackScreenView("View post : "+post.title_plain); 

    } 

    private void initToolbar() { 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     actionBar = getSupportActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     actionBar.setHomeButtonEnabled(true); 
     actionBar.setTitle(""); 
    } 

    private void requestDetailsPostApi() { 
     API api = RestAdapter.createAPI(); 
     callbackCall = api.getPostDetialsById(post.id); 
     callbackCall.enqueue(new Callback<CallbackDetailsPost>() { 
      @Override 
      public void onResponse(Call<CallbackDetailsPost> call, Response<CallbackDetailsPost> response) { 
       CallbackDetailsPost resp = response.body(); 
       if (resp != null && resp.status.equals("ok")) { 
        post = resp.post; 
        displayPostData(false); 
        swipeProgress(false); 
       } else { 
        onFailRequest(); 
       } 
      } 

      @Override 
      public void onFailure(Call<CallbackDetailsPost> call, Throwable t) { 
       if (!call.isCanceled()) onFailRequest(); 
      } 

     }); 
    } 

    private void requestAction() { 
     showFailedView(false, ""); 
     swipeProgress(true); 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       requestDetailsPostApi(); 
      } 
     }, Constant.DELAY_TIME_MEDIUM); 
    } 

    private void onFailRequest() { 
     swipeProgress(false); 
     if (NetworkCheck.isConnect(this)) { 
      showFailedView(true, getString(R.string.failed_text)); 
     } else { 
      showFailedView(true, getString(R.string.no_internet_text)); 
     } 
    } 

    private void displayPostData(boolean is_draft) { 
     ((TextView) findViewById(R.id.title)).setText(Html.fromHtml(post.title)); 

     WebView webview = (WebView) findViewById(R.id.content); 
     String html_data = "<style>img{max-width:100%;height:auto;} iframe{width:100%;}</style> "; 
     html_data += post.content; 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.getSettings(); 
     webview.getSettings().setBuiltInZoomControls(true); 
     webview.setBackgroundColor(Color.TRANSPARENT); 
     webview.setWebChromeClient(new WebChromeClient()); 
     webview.loadData(html_data, "text/html; charset=UTF-8", null); 
     // disable scroll on touch 
     webview.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       return (event.getAction() == MotionEvent.ACTION_MOVE); 
      } 
     }); 

     ((TextView) findViewById(R.id.date)).setText(Tools.getFormatedDate(post.date)); 
     ((TextView) findViewById(R.id.comment)).setText(post.comment_count + ""); 
     ((TextView) findViewById(R.id.tv_comment)).setText(getString(R.string.show_tv_comments) + " (" + post.comment_count + ")"); 
     ((TextView) findViewById(R.id.category)).setText(Html.fromHtml(Tools.getCategoryTxt(post.categories))); 
     Tools.displayImageThumbnail(this, post, ((ImageView) findViewById(R.id.image))); 

     if(is_draft){ 
      return; 
     } 
     // when show comments click 
     ((MaterialRippleLayout) findViewById(R.id.bt_show_comment)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (post.comments.size() <= 0) { 
        Snackbar.make(parent_view, R.string.post_have_no_comment, Snackbar.LENGTH_SHORT).show(); 
        return; 
       } 
       dialogShowComments(post.comments); 
      } 
     }); 

     // when post comments click 
     ((MaterialRippleLayout) findViewById(R.id.bt_send_comment)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (!AppConfig.MUST_REGISTER_TO_COMMENT) { 
        Intent i = new Intent(ActivityPostDetails.this, ActivityWebView.class); 
        if (sharedPref.isRespondEnabled()) { 
         i = new Intent(ActivityPostDetails.this, ActivitySendComment.class); 
        } 
        i.putExtra(EXTRA_OBJC, post); 
        startActivity(i); 
       } else { 
        Tools.dialogCommentNeedLogin(ActivityPostDetails.this, post.url); 
       } 
      } 
     }); 
     Snackbar.make(parent_view, R.string.post_detail_displayed_msg, Snackbar.LENGTH_SHORT).show(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int item_id = item.getItemId(); 
     if (item_id == android.R.id.home) { 
      onBackPressed(); 
     } else if (item_id == R.id.action_share) { 
      Tools.methodShare(ActivityPostDetails.this, post); 
     } else if (item_id == R.id.action_later) { 
      if (post.isDraft()) { 
       Snackbar.make(parent_view, R.string.cannot_add_to_read_later, Snackbar.LENGTH_SHORT).show(); 
       return true; 
      } 
      String str; 
      if (flag_read_later) { 
       RealmController.with(this).deletePost(post.id); 
       str = getString(R.string.remove_from_msg); 
      } else { 
       RealmController.with(this).savePost(post); 
       str = getString(R.string.added_to_msg); 
      } 
      Snackbar.make(parent_view, "Post " + str + " Read Later", Snackbar.LENGTH_SHORT).show(); 
      refreshReadLaterMenu(); 
     } else if (item_id == R.id.action_browser) { 
      Tools.directLinkToBrowser(this, post.url); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(final Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_activity_post_details, menu); 
     read_later_menu = menu.findItem(R.id.action_later); 
     refreshReadLaterMenu(); 
     return true; 
    } 

    private void dialogShowComments(List<Comment> items) { 

     final Dialog dialog = new Dialog(ActivityPostDetails.this); 
     dialog.setCancelable(true); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // before 
     dialog.setContentView(R.layout.dialog_comments); 

     WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
     lp.copyFrom(dialog.getWindow().getAttributes()); 
     lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
     lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 

     RecyclerView recyclerView = (RecyclerView) dialog.findViewById(R.id.recyclerView); 
     recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
     recyclerView.setHasFixedSize(true); 
     AdapterComments mAdapter = new AdapterComments(this, items); 
     recyclerView.setAdapter(mAdapter); 

     ((ImageView) dialog.findViewById(R.id.img_close)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
     dialog.getWindow().setAttributes(lp); 
    } 

    private void refreshReadLaterMenu() { 
     flag_read_later = RealmController.with(this).getPost(post.id) != null; 
     Drawable drawable = read_later_menu.getIcon(); 
     if (flag_read_later) { 
      drawable.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_ATOP); 
     } else { 
      drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP); 
     } 
    } 

    private void prepareAds() { 
     if (AppConfig.ENABLE_ADSENSE && NetworkCheck.isConnect(getApplicationContext())) { 
      AdView mAdView = (AdView) findViewById(R.id.ad_view); 
      AdRequest adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build(); 
      // Start loading the ad in the background. 
      mAdView.loadAd(adRequest); 
     } else { 
      ((RelativeLayout) findViewById(R.id.banner_layout)).setVisibility(View.GONE); 
     } 
    } 

    private void showFailedView(boolean show, String message) { 
     View lyt_failed = (View) findViewById(R.id.lyt_failed); 
     View lyt_main_content = (View) findViewById(R.id.lyt_main_content); 

     ((TextView) findViewById(R.id.failed_message)).setText(message); 
     if (show) { 
      lyt_main_content.setVisibility(View.GONE); 
      lyt_failed.setVisibility(View.VISIBLE); 
     } else { 
      lyt_main_content.setVisibility(View.VISIBLE); 
      lyt_failed.setVisibility(View.GONE); 
     } 
     ((Button) findViewById(R.id.failed_retry)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       requestAction(); 
      } 
     }); 
    } 

    private void swipeProgress(final boolean show) { 
     if (!show) { 
      swipe_refresh.setRefreshing(show); 
      return; 
     } 
     swipe_refresh.post(new Runnable() { 
      @Override 
      public void run() { 
       swipe_refresh.setRefreshing(show); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     if(from_notif) { 
      startActivity(new Intent(getApplicationContext(), ActivityMain.class)); 
      finish(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 
} 

Logcat

12-09 13:56:43.962 6867-6914/com.balrajarpit.balrajarpit D/FA: Logging event (FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash, firebase_screen_class(_sc)=ActivityPostDetails, firebase_screen_id(_si)=8020478545849927104, timestamp=1512808003957, fatal=1}] 
12-09 13:56:43.979 6867-6914/com.balrajarpit.balrajarpit V/FA: Connecting to remote service 
12-09 13:56:43.985 6867-6914/com.balrajarpit.balrajarpit V/FA: Recording user engagement, ms: 23008 
12-09 13:56:43.991 6867-6914/com.balrajarpit.balrajarpit D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=23008, firebase_screen_class(_sc)=ActivityPostDetails, firebase_screen_id(_si)=8020478545849927104}] 
12-09 13:56:44.012 6867-6914/com.balrajarpit.balrajarpit V/FA: Connection attempt already in progress 
+0

Eine Ihrer kürzlich importierten Bibliothek hat eine Unterstützung 25! Was ist die letzte hinzugefügte Bibliothek ??? – Xenolion

+0

'com.android.support:appcompat-v7:26.+' –

+0

Oooooh können wir nicht entfernen, überprüfen Sie die Fehlerzeilen, die einige Ihrer vorherigen mit 25 gemacht wurden, kann nachgerüstet werden und zu der mit 26 aktualisieren. Sonst wann immer Sie sehen 26 stell stattdessen 25 ein. Obwohl dies dich zurückschicken wird! – Xenolion

Antwort

0

Ich bin mir nicht sicher, ob es in diesem Fall das Problem ist, aber die Verwendung verschiedener Versionen von Support-Bibliotheken kann Laufzeitabstürze verursachen. Sie können diejenigen finden, die eine andere Version verwenden (vielleicht intern von einer anderen Bibliothek verwendet), indem Sie den folgenden Befehl in (Android Studio) -Anschluss Ausführung:

gradlew -q dependencies app:dependencies --configuration compile 

Wenn der Befehl nicht funktioniert, Sie vielleicht konfigurieren müssen zuerst eine Grapple Wrapper. Dazu fügen Sie den folgenden Code zu Ihrem Projekt build.gradle Datei:

task wrapper(type: Wrapper) { 
    gradleVersion = '4.1' 
} 

und führen Sie den Befehl

gradle wrapper 

von Terminal. Wenn es immer noch nicht funktioniert, befindet sich Gradle möglicherweise nicht in Ihrem PATH. Sie können es im Android Studio-Installationsordner finden, wenn Sie es hinzufügen möchten.

Sobald Sie wissen, welche eine andere Version verwendet, fügen Sie es als eine Abhängigkeit selbst mit der richtigen Version, um die andere Version zu überschreiben und zu synchronisieren.

Es funktionierte für mich so, als ich das Problem hatte, hoffe es hilft!

+0

Ausführung des Befehls und der aktualisierten Version von Realm und jeder einzelnen Bibliothek mit der neuesten Version, aber immer noch mit demselben Problem. –

+0

Endlich gelöst. Es war ein Problem mit dem Laden von Bildern. Aufgrund der Größe des Bildes stürzte irgendwann das Fragment ab. –

Verwandte Themen