3

Я использую ShowcaseView библиотеку от here в моем приложении для Android. Я хочу использовать ShowcaseView с Actionbar Compat. Но я не понимаю, как его использовать? Я пробовал следующий код, но он выбрасывает NullPointerexception. Пожалуйста, помогите мне решить эту проблему.Использование ShowCaseView с ActionBarCompat/ActionBarSherlock Android

спасибо.

Код: Журнал

public class Activity1 extends ActionBarActivity implements 
     OnShowcaseEventListener { 

    ShowcaseView sv; 
    ShowcaseView.ConfigOptions co; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     try { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.screen1); 
      co = new ShowcaseView.ConfigOptions(); 
      co.hideOnClickOutside = false; 
      co.block = false; 
     }catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 

     ActionViewTarget target = new ActionViewTarget(this, 
       ActionViewTarget.Type.OVERFLOW); 
     sv = ShowcaseView.insertShowcaseView(target, this, "Edit", 
       "Click here to edit image.", co); 
    } 
} 

Ошибка:

11-29 17:12:19.792: E/AndroidRuntime(20991): FATAL EXCEPTION: main 
11-29 17:12:19.792: E/AndroidRuntime(20991): java.lang.NullPointerException 
11-29 17:12:19.792: E/AndroidRuntime(20991): at com.espian.showcaseview.targets.ViewTarget.getPoint(ViewTarget.java:22) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at com.espian.showcaseview.targets.ActionViewTarget.getPoint(ActionViewTarget.java:52) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at com.espian.showcaseview.ShowcaseView$3.run(ShowcaseView.java:240) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at android.os.Handler.handleCallback(Handler.java:725) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at android.os.Looper.loop(Looper.java:137) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at android.app.ActivityThread.main(ActivityThread.java:5283) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at java.lang.reflect.Method.invoke(Method.java:511) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
11-29 17:12:19.792: E/AndroidRuntime(20991): at dalvik.system.NativeStart.main(Native Method) 
+0

В каком редакторе вы использовали? eclipse или Android Developer Tools. У меня проблема в Eclipse. –

ответ

4

Я решил, что issue.Replace код OnCreateOptionsMenu() со следующим кодом.

Код:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 

     sv = ShowcaseView.insertShowcaseViewWithType(ShowcaseView.ITEM_ACTION_ITEM, 
      R.id.action_edit, FaceFrameActivity_dual.this,"Edit", 
      "Click here to edit image.", co); 
    } 
+0

Можете ли вы дать мне образец этого проекта. Я застрял с проблемой импорта в Eclipse. Пожалуйста. –

+0

'ShowcaseView.ITEM_ACTION_ITEM' не может быть разрешен или не является полем. –

+0

То же самое для меня. Кажется, что проект изменился, но он больше не поддерживается, и трудно найти способ сделать это с помощью SupportActionBar, даже для библиотеки совместимости Google. :( –

0

См this blog post. Я использую библиотеку поддержки, и она работает нормально.

Следующий код создаст три вида, которые будут отображаться в обратном порядке (меню переполнения, представление на моей странице и элемент панели действий).

ShowcaseViews views = new ShowcaseViews(activity, new ShowcaseViews.OnShowcaseAcknowledged() { 
     @Override 
     public void onShowCaseAcknowledged(ShowcaseView showcaseView) { 
      Toast.makeText(activity, "clicked", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    views.addView(new ShowcaseViews.ItemViewProperties(ShowcaseViews.ItemViewProperties.ID_OVERFLOW, R.id.test, R.id.test, ShowcaseView.ITEM_ACTION_OVERFLOW)); 
    views.addView(new ShowcaseViews.ItemViewProperties(R.id.search_keyword, R.string.test, R.string.test, 0.5f)); 
    views.addView(new ShowcaseViews.ItemViewProperties(R.id.action_refresh, R.string.test, R.string.test, ShowcaseView.ITEM_ACTION_ITEM, 0.5f)); 
    views.show(); 
Смежные вопросы