Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
123 views
in Technique[技术] by (71.8m points)

java - My android studio project works finely on lollipop but crashes while testing on kitkat devices

My android studio project works finely on lollipop but crashes while testing on kitkat devices. it has a material view pager and while opening activity that has material view pager the app just force close on kit kat device.

    E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: com.production.iedc.helo, PID: 12711
                                                                          java.lang.RuntimeException: Unable to start activity ComponentInfo{com.production.iedc.helo/com.production.iedc.helo.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:110)
                                                                              at android.os.Looper.loop(Looper.java:193)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5292)
                                                                              at java.lang.reflect.Method.invokeNative(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:515)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
                                                                              at dalvik.system.NativeStart.main(Native Method)
                                                                           Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:310)
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279)
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253)
                                                                              at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
                                                                              at com.production.iedc.helo.MainActivity.onCreate(MainActivity.java:80)
                                                                              at android.app.Activity.performCreate(Activity.java:5264)
                                                                              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)?
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:151)?
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)?
                                                                              at android.os.Handler.dispatchMessage(Handler.java:110)?
                                                                              at android.os.Looper.loop(Looper.java:193)?
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5292)?
                                                                              at java.lang.reflect.Method.invokeNative(Native Method)?
                                                                              at java.lang.reflect.Method.invoke(Method.java:515)?
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)?
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)?
                                                                              at dalvik.system.NativeStart.main(Native Method)?

   Build.gradle

 apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"

        defaultConfig {
            applicationId "com.production.iedc.helo"
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
            multiDexEnabled true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile 'com.android.support:design:23.1.1'
        compile ('com.github.florent37:materialviewpager:1.0.8@aar'){
            transitive=true

        }
        compile 'com.squareup.picasso:picasso:2.3.3'
        compile 'com.github.paolorotolo:appintro:3.4.0'
        compile 'com.android.support:multidex:1.0.0'
    }

Main activity

package com.production.iedc.helo;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.media.Image;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toolbar;

import com.github.florent37.materialviewpager.MaterialViewPager;
import com.squareup.picasso.Picasso;


public class MainActivity extends ActionBarActivity {

    MaterialViewPager materialViewPager;
    View headerLogo;
    ImageView headerLogoContent;
    DrawerLayout mDrawer;
    ActionBarDrawerToggle mDrawerToggle;
    android.support.v7.widget.Toolbar toolbar;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //  Declare a new thread to do a preference check
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                //  Initialize SharedPreferences
                SharedPreferences getPrefs = PreferenceManager
                        .getDefaultSharedPreferences(getBaseContext());

                //  Create a new boolean and preference and set it to true
                boolean isFirstStart = getPrefs.getBoolean("firstStart", true);

                //  If the activity has never started before...
                if (isFirstStart) {

                    //  Launch app intro
                    Intent i = new Intent(MainActivity.this, DefaultIntro.class);
                    startActivity(i);

                    //  Make a new preferences editor
                    SharedPreferences.Editor e = getPrefs.edit();

                    //  Edit preference to make it false because we don't want this to run again
                    e.putBoolean("firstStart", false);

                    //  Apply changes
                    e.apply();
                }
            }
        });


        // Start the thread
        t.start();



        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //4 onglets
        final int tabCount = 4;

        //les vues définies dans @layout/header_logo
        headerLogo = findViewById(R.id.headerLogo);
        headerLogoContent = (ImageView) findViewById(R.id.headerLogoContent);

        //le MaterialViewPager
        this.materialViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager);
        toolbar = materialViewPager.getToolbar();
        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (toolbar != null) {
            setSupportActionBar(toolbar);
            final ActionBar actionBar = getSupportActionBar();
            if (actionBar != null) {
                actionBar.setDisplayHomeAsUpEnabled(true);
                actionBar.setDisplayShowHomeEnabled(true);
                actionBar.setDisplayShowTitleEnabled(true);
                actionBar.setDisplayUseLogoEnabled(false);
                actionBar.setHomeButtonEnabled(true);
            }
        }
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, 0, 0);
        mDrawer.setDrawerListener(mDrawerToggle);
        materialViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {


            @Override
            public Fragment getItem(int position) {
                //je créé pour chaque onglet un RecyclerViewFragment
                return RecyclerViewFragment.newInstance();
            }

                @Override
                public int getCount() {
                    return 4;
                }

                //le titre à afficher pour chaque page
                @Override
                public CharSequence getPageTitle(int position) {
                    switch (position % 4) {
                        case 0:
                            return "ACADEMICS";
                        case 1:
                            return "NEWS FEEDS";
                        case 2:
                            return "EVENTS";
                        case 3:
                            return "MISC";
                        default:
                            return "Page " + position;
                    }

                }

                int oldItemPosition = -1;
                @Override
                public void setPrimaryItem(ViewGroup container, int position, Object object) {
                    super.setPrimaryItem(container, position, object);

                    //seulement si la page est différente
                    if (oldItemPosition != p

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

you should change the inheritance of java use

ActionBarActivity

to

Activity

and leave the dialog theme in the manifest as it is. i think you will not have the problem.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...