Android - 从另一个活动控制按钮

时间:2011-11-02 09:40:18

标签: android android-intent

我有两项活动。

家庭活动包含一个列表视图,其中包含两个名为 checkIn 指示的按钮。单击checkIn按钮时,它会执行一些操作(例如A)。

当点击方向按钮时,它会启动方向活动。所以在方向活动中,如果某些条件满足,则会出现一个警告框,询问是否检查是否。如果单击是,我想在签到按钮上执行操作A但是在不破坏方向活动的情况下,我想在其他活动中控制具有警报框状态的OnclickListener按钮,而不会丢失当前活动的状态。

这是Listview of Home activity使用的Listadapter的getView中的代码部分.btnChild1是CheckIn按钮。

btnChild1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (btnChild1.getText().toString().equals("Check In")) {
                btnChild1.setText("Cancel");
                taskSubList.get(position).setCheckIn(1);
                startTime = System.currentTimeMillis();

            } else {
                btnChild1.setText("Check In");
                taskSubList.get(position).setCheckIn(0);
                long difference =taskSubList.get(position).getTimeSpent() +System.currentTimeMillis() - startTime;
                taskSubList.get(position).setTimeSpent(difference); 
                String values[]={Integer.toString(taskSubList.get(position).getId()), Integer.toString((int) difference)};
                String updateTime=Helper.getfromUrl(updateTimeUrl,values);
                if (!updateTime.equals("success"))
                {
                    Toast.makeText(context, "Not updated", Toast.LENGTH_SHORT).show();
                }
                Intent reasonIn = new Intent(context.getApplicationContext(), Reason.class);
                context.startActivity(reasonIn);
            }

        }
    }); 

在Directions.java中

    if((int)distance/1000 <= 30 && checkInStatus == 0)
    {
        AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
        alertbox.setMessage("Do you want to Check In?");
        alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface arg0, int arg1) {
                // I have to do the above function
            }
        });
       alertbox.setNegativeButton("No", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {

            }

        });
        alertbox.show();
    }

3 个答案:

答案 0 :(得分:2)

“不破坏方向活动” - 只是不要调用finish()方法,活动不会被销毁,但只能保留“onPause”。

在你的情况下,你需要更具体的检查内容。如果它以某种方式改变了第一个活动的UI,或者不是。例如。

如果checkln只显示某些内容(图片,文字,来自网络服务的数据),请致电

StartActivityForResult(Intent intent, int requestCode);

然后当完成显示信息的时间时,只需完成新创建的活动并调用

SetResult(int resultCode);

并且您将返回第二个活动,显示与显示警报框之前显示的内容相同的内容。

答案 1 :(得分:1)

你可以做的是编写一个checkIn函数并将这两个按钮绑定到它,这一切都取决于你需要做什么。这样您就可以创建一个处理checkIn等的实用程序类,但是将activity.Home和activities.Directions中的按钮绑定到实用程序类中的操作A.

答案 2 :(得分:1)

你要做的是:

导入所需的库:

import android.app.Activity;

在您的辅助活动中,您可以定义:

public static Activity myActivity;

然后,在您的主要活动中,您说:

SecondaryActivityName.myActivity=this;

最后,当你想从次要活动中调用主活动的那个按钮时:

Button myButton=(Button) SecondaryActivityName.myActivity.findViewById(R.id.ButtonID);
myButton.setOnClickListener(this);