-1

I am new to Android Development and I am trying to implement a simple Image Slider to view some images using ViewPager. I found this code in some website and am trying to install and run on both simulator and my android phone but after compiling and installing the app it does not open (in fact i kept getting the message 'app keeps stopping'). I am so new to android that I do not even know how to debug this. Can someone please help? This is the error I am getting after making changes to the androidx and necessary gradle dependency as some people mentioned:

2019-09-05 11:02:05.645 2886-24531/? W/ActivityManager: Permission Denial: starting Intent { act=android.intent.action.MAIN flg=0x10200000 cmp=com.example.test.imageslider/.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } (has extras) } from ProcessRecord{668012 22868:com.google.android.googlequicksearchbox:search/u0a58} (pid=22868, uid=10058) not exported from uid 10088
2019-09-05 11:02:05.649 22868-22868/? E/ContextIntentStarter: Cannot start activity: Intent { act=android.intent.action.MAIN flg=0x10200000 cmp=com.example.test.imageslider/.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } (has extras) }
    java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN flg=0x10200000 cmp=com.example.test.imageslider/.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } (has extras) } from ProcessRecord{668012 22868:com.google.android.googlequicksearchbox:search/u0a58} (pid=22868, uid=10058) not exported from uid 10088
        at android.os.Parcel.readException(Parcel.java:1701)
        at android.os.Parcel.readException(Parcel.java:1654)
        at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3564)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1526)
        at android.app.Activity.startActivityForResult(Activity.java:4403)
        at android.support.v4.app.w.startActivityForResult(SourceFile:132)
        at com.google.android.libraries.ac.c.b.a.startActivityForResult(SourceFile:54)
        at android.app.Activity.startActivityForResult(Activity.java:4362)
        at android.support.v4.app.w.startActivityForResult(SourceFile:129)
        at com.google.android.libraries.ac.c.b.a.startActivityForResult(SourceFile:51)
        at android.app.Activity.startActivity(Activity.java:4686)
        at com.google.android.libraries.ac.c.b.a.startActivity(SourceFile:45)
        at com.google.android.apps.gsa.shared.util.r.d.run(Unknown Source)
        at com.google.android.apps.gsa.shared.util.debug.b.b.a(SourceFile:2)
        at com.google.android.apps.gsa.shared.util.r.a.a(SourceFile:19)
        at com.google.android.apps.gsa.shared.util.r.b.a(SourceFile:8)
        at com.google.android.apps.gsa.search.shared.overlay.a.o.a(SourceFile:29)
        at com.google.android.apps.gsa.search.shared.service.w.a_(SourceFile:77)
        at com.google.android.apps.gsa.search.shared.service.ag.run(Unknown Source)
        at com.google.android.apps.gsa.shared.util.c.a.ci.a(SourceFile:2)
        at com.google.android.apps.gsa.shared.util.c.a.ch.run(SourceFile:5)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6776)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

For some reason there is still a line for android.support.v4!

Here is my MainActivity.java

package com.example.test.imageslider;



import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;



public class MainActivity extends AppCompatActivity {

    ViewPager viewPager;

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

        viewPager = (ViewPager) findViewById(R.id.viewPager);

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);

        viewPager.setAdapter(viewPagerAdapter);

    }

}

ViewPagerAdapter.java

package com.example.test.imageslider;

import android.content.Context;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.view.LayoutInflater;

public class ViewPagerAdapter extends PagerAdapter {

    private Context context;
    private LayoutInflater layoutInflater;
    private Integer [] images = {R.drawable.image1,R.drawable.image2,R.drawable.image3};

    public ViewPagerAdapter(Context context) {
        this.context = context;
    }

    @Override
    public int getCount() {
        return images.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, final int position) {

        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.custom_layout, null);
        ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
        imageView.setImageResource(images[position]);

        ViewPager vp = (ViewPager) container;
        vp.addView(view, 0);
        return view;

    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        ViewPager vp = (ViewPager) container;
        View view = (View) object;
        vp.removeView(view);

    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test.imageslider" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name="com.example.test.imageslider.MainActivity"></activity>
    </application>


</manifest>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.test.imageslider.MainActivity">



    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="190dp"
        android:layout_marginBottom="8dp"/>



</RelativeLayout>

custom_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"
        android:id="@+id/imageView" />

</LinearLayout>

3 Answers3

1

I guess the problem is here

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="190dp"
    android:layout_marginBottom="8dp"/>

because you are using androidx based libraries, thats why your app is crashing Refer to this link for more information based on androidx viewpager. would be more easy to tell exact solution if you can provide logs, hope that helps.

0

Add this in you dependencies

api 'com.google.android.material:material:1.0.0-rc01' 

And Remove

api 'com.android.support:design:28.0.0'

Replace

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="190dp"
    android:layout_marginBottom="8dp"/>

With

 <androidx.viewpager.widget.ViewPager
     android:id="@+id/viewPager"
     android:layout_width="match_parent"
     android:layout_height="190dp"
     android:layout_marginBottom="8dp" />

You have not write Any entry point in you app please write it

  <activity 
    android:name="com.example.test.imageslider.MainActivity">
     <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
     </activity>
0

There is different set of libraries in androidx. normal android.support.v4 based libraries cannot be supported. use this instead androidx.viewpager.widget.ViewPager

Omkar
  • 3,040
  • 1
  • 22
  • 42