按钮不在第一个和最后一个索引?

时间:2011-08-30 07:54:27

标签: java android

我正在开发一个应用程序,其中有两个导航按钮,分别是“上一页”和“下一页”,分别用于加载故事。当我轻轻点击这些按钮时,当我连续点击下一个按钮到最后一个索引而没有任何中断然后前一个按钮不起作用或类似当我开始点击前一个按钮到第一个索引时我无法前进。

请记住,这只发生在极端情况下,onClick未调用,不知道原因。

我的代码如下,请帮帮我。提前谢谢。

这是onClick的代码,除了极端情况之外,在没有轻轻敲击按钮的情况下,它在所有情况下都能正常工作。

 public void onClick(View v) {

    if (visible == true) {
        Log.e("visible", "true");
        return;
    }
    visible = true;

    try {
        Log.e("Now", "On Click");

        pDialog = new ProgressDialog(StoriesListController.this);
        pDialog.setIndeterminate(true);
        pDialog.setIcon(R.drawable.icon_small);
        pDialog.setCancelable(true);
        if (isFavoriteList == true) {
            pDialog.setMessage("Loading favorites...");
        } else {
            pDialog.setMessage("Loading data...");
        }
        pDialog.setTitle("Please wait");
        pDialog.setOnCancelListener(new OnCancelListener() {

            public void onCancel(DialogInterface arg0) {
                if (cancelableHeavyWorker != null) {
                    cancelableHeavyWorker.setHandler(null);
                }
                finish();
            }
        });
        pDialog.show();
        if (v == next) {
            if (ind < items.size() - 1) {
                ind++;
                loadAndShowNextActivity();
            }
        } else if (v == previous) {
            if (ind > 0) {
                ind--;
                loadAndShowNextActivity();
            }
        }
        // realeaseMemoryIfneededofStory(ind);
    } catch (Exception e) {

        Log.e("Error", "--.OnClink Message" + e.toString());
        e.printStackTrace();
    }
}

此外,在回调函数中,布尔变量“visible”被设置为false。

回拨函数代码如下:

private void fetchTopStoryDetailCallback(Object resultVector) {

    System.out.println("fetchTopStoryDetailCallback");
    try {
        Vector<?> v = (Vector<?>) resultVector;
        boolean completedOrFailed = ((Boolean) v.elementAt(0)).booleanValue();
        if (completedOrFailed == true) {
            boolean slideshow = ((Boolean) v.elementAt(1)).booleanValue();
            Object result = v.elementAt(2);
            String res[] = (String[]) result;

            if (slideshow) {
                if (Utils.topStorySlidesArrayList != null && Utils.topStorySlidesArrayList.size() > 0) {
                    Intent articleActivityIntent = new Intent(this, SlideShowActivity.class);
                    articleActivityIntent.putExtra("storyData", (String[]) result);
                    articleActivityIntent.putExtra("back", back);
                    articleActivityIntent.putStringArrayListExtra("sid", slideids);
                    // articleActivityIntent.putExtra("contentType", )
                    articleActivityIntent.putExtra("addkey", ADDS_KEY);
                    showActivityInContoller(articleActivityIntent);
                    hidePrgressgingDailog();

                } else {
                    hidePrgressgingDailog();
                    this.closeActivity = true;
                    showMessage("Error", "This story encounter an error while opening. Check your Internet Connection and try later");
                }

            } else {

                if (res[3] != null && (!(res[3].equalsIgnoreCase("null")) && (!res[3].equals("")))) {
                    Intent slideshowActivtyIntent = new Intent(this, ArticleActivity.class);
                    slideshowActivtyIntent.putExtra("storyData", (String[]) result);
                    slideshowActivtyIntent.putExtra("back", back);
                    slideshowActivtyIntent.putExtra("addkey", ADDS_KEY);
                    showActivityInContoller(slideshowActivtyIntent);
                    hidePrgressgingDailog();
                } else {
                    hidePrgressgingDailog();
                    this.closeActivity = true;
                    showMessage("Error", "This story encounter an error while opening. Check your Internet Connection and try later");
                }
            }

        } else {
            showMessage("Error", "This story encounter an error while opening. Check your Internet Connection and try later");
            hidePrgressgingDailog();
        }

    } catch (Exception e) {
        Log.e("StoriesController", "Message = " + e.toString());
        e.printStackTrace();
    }
    finally {visible = false; }
}

这就是设置按钮的可见性...... !!!!

private void adjustButtonsVisibility(){

    try {
        if (items.size() == 1) {
            next.setEnabled(false);
            next.setImageResource(R.drawable.navigator_next_disable);
            previous.setEnabled(false);
               previous.setImageResource(R.drawable.navigator_previous_disable);
            //hidePrgressgingDailog();
            return;
        }
        if (ind == 0) {
            previous.setEnabled(false);
            next.setEnabled(true);
            previous.setImageResource(R.drawable.navigator_previous_disable);
            next.setImageResource(R.drawable.story_next_arrow);
            hidePrgressgingDailog();

        } else if (ind > 0 && ind < items.size() - 1) {
            previous.setEnabled(true);
            next.setEnabled(true);
            previous.setImageResource(R.drawable.story_previous_arrow);
            next.setImageResource(R.drawable.story_next_arrow);
        }
        if (ind == items.size() - 1) {
            previous.setEnabled(true);
            next.setEnabled(false);
            previous.setImageResource(R.drawable.story_previous_arrow);
            next.setImageResource(R.drawable.navigator_next_disable);
            hidePrgressgingDailog();
        }
    } catch (Exception e) {
        Log.e("Error", "--,adjustButtonsVisibility Message = " + e);
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

这样做

    if (ind == 0) {
        previous.setEnabled(false);
        previous.setImageResource(R.drawable.navigator_previous_disable);
        next.setImageResource(R.drawable.story_next_arrow);
        hidePrgressgingDailog();
    }
    else if (ind > 0 && ind < items.size() - 1) {
        previous.setEnabled(true);
        next.setEnabled(true);
        previous.setImageResource(R.drawable.story_previous_arrow);
        next.setImageResource(R.drawable.story_next_arrow);
    }
    else if (ind == items.size() - 1) {
        previous.setEnabled(true);
        next.setEnabled(false);
        previous.setImageResource(R.drawable.story_previous_arrow);
        next.setImageResource(R.drawable.navigator_next_disable);
        hidePrgressgingDailog();
    }