1

我是 android 新手,希望得到您的帮助。

我在一个活动中有五个按钮。每个按钮通向不同的活动。单击每个按钮时,我们将进入一个活动,在该活动中我执行数据库插入功能,而在返回用户时,我们将进入保留五个按钮的主要活动。

现在,我想要的是我希望用户知道他已经点击了哪个按钮,以避免用户的困惑。那就是我想在他完成每个按钮所引导的活动中的插入后禁用该按钮。

这是我尝试过的:

public class ResourcesActivity extends Activity {
    static boolean isBtnVenueClikced = false; {


        public void buttonListeners() {
            venue_btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    isBtnVenueClikced = true;
                    Log.i("In button venue click isBtnVenueClikced ", isBtnVenueClikced + "");
                    Intent venue_intent = new Intent(getApplicationContext(), VenueActivity.class);
                    venue_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(venue_intent);

                }


            });
            food_cost_btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.i("In Food Button isBtnVenueClikced ", isBtnVenueClikced + "");
                    //isBtnFoodClicked = true;
                    Intent food_intent = new Intent(getApplicationContext(), FoodAndBeveragesActivity.class);
                    food_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(food_intent);

                }
            });
            accomodation_btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    //isBtnAccClicked = true;
                    Intent accomodation_intent = new Intent(getApplicationContext(), AccomodationActivity.class);
                    accomodation_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(accomodation_intent);

                }
            });
            guest_details_btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    //isBtnGuestClicked = true;
                    Intent guest_details_intent = new Intent(getApplicationContext(), GuestDetailsActivity.class);
                    guest_details_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(guest_details_intent);

                }
            });
            miscl_btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    //isBtnOtheClicked = true;
                    Intent others_intent = new Intent(getApplicationContext(), OthersActivity.class);
                    others_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(others_intent);

                }
            });
        }

        @Override
        protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            Log.i("In onResume isBtnVenueClikced ", isBtnVenueClikced + "");
            //checkcliks();
            //isBtnVenueClikced = false;
            if (isBtnVenueClikced == false) {
                venue_btn.setEnabled(true);
            } else {
                venue_btn.setEnabled(false);
            }


        }
    }  
4

3 回答 3

1

startActivityForResult(intent, requestCode);在使用单击按钮的请求代码启动活动时使用方法。并且在您返回时的第二个活动中刚刚设置setResult(RESULT_OK);,这意味着在第二个活动中一切都很好,在第一个活动中您将获得回调方法的结果

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
    }

因此,您可以通过检查请求代码来禁用此方法中的按钮。

希望这可以帮助你

编辑:

首先取五个常量,例如

private final int VENUE_BUTTON_REQUEST_CODE = 0;

在您的点击监听器中

venue_btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                   Intent venue_intent = new Intent(getApplicationContext(), VenueActivity.class);
                    venue_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivityForResult(venue_intent,VENUE_BUTTON_REQUEST_CODE);

                }


            });

在你的回调方法中这样做

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if(requestCode == VENUE_BUTTON_REQUEST_CODE){
     venue_btn.setEnable(false);
      }
        super.onActivityResult(requestCode, resultCode, data);
    }
于 2013-02-14T05:42:43.057 回答
0

好吧,您可以尝试一个简单的解决方案

当用户单击按钮时,您可以进入共享首选项,通知用户单击了哪个按钮。

例如

food_cost_btn.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        Log.i("In Food Button isBtnVenueClikced ", isBtnVenueClikced + "");

        context.getSharedPreferences("myPref", Context.MODE_PRIVATE).edit()
            .putBoolean("food_cost_btn", true).commit();

        Intent food_intent = new Intent(getApplicationContext(), FoodAndBeveragesActivity.class);
        food_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(food_intent);

    }
}); 

在 onResume 中,您将编写以下内容。

if (context.getSharedPreferences("myPref", Context.MODE_PRIVATE)).getBoolean("food_cost_btn", false)) {
    food_cost_btn.setEnabled(false);
}   
于 2013-02-14T05:45:33.170 回答
0

像这样在一个数组中取出所有 5 个按钮

Buttons[] buttons={venu_btn,foodcost_btn,accomadation_btn,guest_detail_btn,misc_btn};

现在在所有 onclick 侦听器中,您正在执行常见任务,所以让我们先减少代码...

为取另一个数组

Class[] classes={VenueActivity.class,FoodAndBeveragesActivity.class,AccomodationActivity.class,GuestDetailsActivity.class,OthersActivity.class};

//设置点击监听

for(int i=0;i<buttons.length;i++)
{
buttons[i].setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent commonintent = new Intent(getApplicationContext(),classes[i]);
            others_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
//send selected class index that is i
             commonintent.putExtra("index",String.valueOf(i));
            startActivity( commonintent);
        }
    });
}

在您的活动中使用额外的字符串从活动返回时获取索引。//您也可以使用 sharedPreference 保存它们,但我建议您使用额外的意图

  String index=getIntent().getExtras().getString("index");
    if(index!=null && index.length!=null)
    {
    int i=Integer.parseInt(index);
    buttons[i].setEnable(false);
    }
于 2013-02-14T05:49:14.683 回答