java - 按钮在第一个和最后一个索引处不起作用?

标签 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();
    }
}

此外, boolean 变量“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)无效 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();
    }
}

最佳答案

这样做

    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();
    }

关于java - 按钮在第一个和最后一个索引处不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240203/

相关文章:

java - AndroidJUnitRunner 不运行包中的测试

java - 何时使用@RequestParam 和@PathVariable

java - 尝试传递 InputStream 时出现 StreamCorruptedException

java - 即使存在默认构造函数,也无法从对象值反序列化(没有基于委托(delegate)或属性的创建者)

android - 我的 GPS 提供商已启用,但我仍然获得空位置

android - 无法破坏 Android Activity

java - 将表中的多个 UI 元素放入数组中

java - Tapestry 5 session bean

android:showAsAction ="always"不适用于选项卡 fragment

java - php 中的变量不会显示在 android 上(使用 json)