【问题标题】:Start new intent ShowcaseViews button click开始新意图 ShowcaseViews 按钮单击
【发布时间】:2014-03-15 03:18:01
【问题描述】:

如果用户在我的 Android 应用内教程 (ShowcaseViews) 中按下按钮,我不知道如何启动新意图。这是我的 ShowcaseViews 类:

public class ShowcaseViews {

private final List<ShowcaseView> views = new ArrayList<ShowcaseView>();
private final Activity activity;
private final int showcaseTemplateId;

private interface OnShowcaseAcknowledged {
    void onShowCaseAcknowledged(ShowcaseView oldView);
}

/**
 * @param activity               The activity containing the views you wish to showcase
 * @param showcaseTemplateLayout Must be the layout of a ShowcaseView - use this to style your showcase
 */
public ShowcaseViews(Activity activity, int showcaseTemplateLayout) {
    this.activity = activity;
    this.showcaseTemplateId = showcaseTemplateLayout;
}

public void addView(ItemViewProperties properties) {
    ShowcaseView viewTemplate = newInstanceOfShowcaseView();
    viewTemplate.setShowcaseItem(properties.itemType, properties.id, activity);
    viewTemplate.setText(properties.titleResId, properties.messageResId);
    setChainClickListener(viewTemplate);
    views.add(viewTemplate);
}

public void addView(ViewProperties properties) {
    ShowcaseView viewTemplate = newInstanceOfShowcaseView();
    View v = activity.findViewById(properties.id);
    viewTemplate.setShowcaseView(v);
    viewTemplate.setText(properties.titleResId, properties.messageResId);
    setChainClickListener(viewTemplate);
    views.add(viewTemplate);
}

private ShowcaseView newInstanceOfShowcaseView() {
    return (ShowcaseView) activity.getLayoutInflater().inflate(showcaseTemplateId, null);
}

private void setChainClickListener(final ShowcaseView viewTemplate) {
    viewTemplate.overrideButtonClick(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            acknowledgedListener.onShowCaseAcknowledged(viewTemplate);
        }
    });
}

private OnShowcaseAcknowledged acknowledgedListener = new OnShowcaseAcknowledged() {
    @Override
    public void onShowCaseAcknowledged(ShowcaseView oldView) {
        oldView.hide();
        show();
    }
};

/**
 * Showcases will be shown in the order they where added, continuing when the button is pressed
 */
public void show() {
    if (views.isEmpty()) {
        return;
    }
    final ShowcaseView view = views.get(0);
    ((ViewGroup) activity.getWindow().getDecorView()).addView(view);
    views.remove(0);
}

/**
 * Used for views on the ActionBar
 */
public static class ItemViewProperties extends ViewProperties {
    public static final int ID_SPINNER = 0;
    public static final int ID_TITLE = 0;
    protected final int itemType;

    public ItemViewProperties(int id, int titleResId, int messageResId, int itemType) {
        super(id, titleResId, messageResId);
        this.itemType = itemType;
    }
}

/**
 * Used for all views except those on the ActionBar
 */
public static class ViewProperties {
    protected final int titleResId;
    protected final int messageResId;
    protected final int id;

    public ViewProperties(int id, int titleResId, int messageResId) {
        this.id = id;
        this.titleResId = titleResId;
        this.messageResId = messageResId;
    }
}

}

这是我的 MainActivity 类:

 public void showcaseSecondActivity() {
    ShowcaseViews views = new ShowcaseViews(CameraTestActivity.this, R.layout.view_showcase);
    views.addView(new ShowcaseViews.ItemViewProperties(0, R.string.showcase_main_spinner_title, R.string.showcase_main_spinner_message, ShowcaseView.ITEM_ACTION_HOME));
    Intent intent = new Intent(CameraTestActivity.this, UserSettingsActivity.class);
    views.show();
}

这是我的 view_showcase XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- This is our ShowCase template that we will use
  whenever we want to showcase an item.
  Here we can customise the colors of the showcase. -->
<com.rohit.ShowcaseView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:showcaseview="http://schemas.android.com/apk/res/com.rohit"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
showcaseview:sv_backgroundColor="@color/showcase_background"
showcaseview:sv_buttonText="@string/showcase_button_ok" />

如果我在 MainActivity 类中的 views.show() 之后添加 startActivity(intent),它甚至不会显示对话框并直接进入意图。我想在用户单击按钮后打开活动。我不知道该怎么办。任何有关此问题的帮助将不胜感激。

【问题讨论】:

  • 你应该展示更多你的MainActivity类。

标签: java android showcaseview


【解决方案1】:

如果您想在用户单击按钮后打开活动,那么startActivity(intent) 应该在与views.show() 方法分开的onClick() 方法中。这样,直到按钮才触发意图被点击。

【讨论】:

  • 嘿,你能给我举个例子吗?我是这方面的初学者,所以我不知道你在说什么。
  • 你可以编辑你的代码来显示你的主要活动吗?这真的会帮助我帮助你。(顺便说一句,我也是新人)
  • 嘿,我找到了!我只需要创建一个 onClick 方法,仅此而已!
  • 太棒了。快乐的编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2017-12-21
相关资源
最近更新 更多