Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ShowcaseView is not working without ActionBar

Is there any way to use ShowcaseView if the application has a theme Theme.AppCompat.Light.NoActionBar and using android.support.v7.widget.Toolbar in the application. I am getting below stack trace while executing the app. Please suggest...

java.lang.RuntimeException: insertShowcaseViewWithType cannot be used when the theme has no ActionBar
        at com.github.amlcurran.showcaseview.targets.AppCompatReflector.getHomeButton(AppCompatReflector.java:32)
        at com.github.amlcurran.showcaseview.targets.AppCompatReflector.getActionBarView(AppCompatReflector.java:20)
        at com.github.amlcurran.showcaseview.targets.ActionViewTarget.setUp(ActionViewTarget.java:22)
        at com.github.amlcurran.showcaseview.targets.ActionViewTarget.getPoint(ActionViewTarget.java:29)
        at com.github.amlcurran.showcaseview.ShowcaseView$1.run(ShowcaseView.java:149)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5312)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
like image 283
Shankar Prasad Avatar asked Nov 27 '22 20:11

Shankar Prasad


2 Answers

You won't be able to make a 'tutorial step' pointing to a menu item if the activity has not ActionBar (it's obvious why... you haven't menu items).

If you want to center the circle in a view inside your activity/fragment, this should work for you.

ShowcaseView.Builder res = new ShowcaseView.Builder(activity, true)
                .setTarget(target)
                .setContentTitle("title")
                .setContentText("content");

Where target is:

Target target = new ViewTarget(view_id, activity)
like image 151
Juan Aguilar Guisado Avatar answered Dec 10 '22 08:12

Juan Aguilar Guisado


I solve my similar problem by this code (in fragment):

        new ShowcaseView.Builder(getActivity())
    .setTarget( new ViewTarget( ((View) parentView.findViewById(R.id.link_to_register)) ) )
    .setContentTitle("ShowcaseView")
    .setContentText("This is highlighting the Home button")
    .hideOnTouchOutside()
    .build();
like image 21
Iman Marashi Avatar answered Dec 10 '22 08:12

Iman Marashi