Android — для управления кнопкой из другого действия

#android #android-intent

#Android #android-намерение

Вопрос:

У меня есть два действия.

Главная активность содержит представление списка с двумя кнопками с именами checkIn и directions.при нажатии кнопки проверки она выполняет некоторую операцию (скажем, A).

При нажатии кнопки направления запускается действие направления.Таким образом, в directions activity, если удовлетворяется какое-то условие, появляется окно оповещения с запросом о том, регистрироваться или нет.Если нажата кнопка «Да», я хочу выполнить операцию A на кнопке проверки, но без уничтожения указаний activity.ie , я хочу управлять кнопкой OnClickListener со статусом alertbox в другом действии, не теряя состояния текущей активности.

это часть кода в getView для Listadapter, используемая Listview для домашней активности.btnChild1 — это кнопка проверки.

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

Комментарии:

1. операция A — это функция или что?

2. он изменяет текст и обновляет поля элемента списка.

Ответ №1:

«без уничтожения направления действия» — просто не вызывайте метод finish(), и действие не будет уничтожено, а будет удерживаться только «на паузе».

В вашей ситуации вам нужно быть более конкретным, что делает материал checkln. если это каким-то образом изменило пользовательский интерфейс первого действия или нет, например.

Если контрольный список просто отображает что-то (изображение, текст, данные из веб-службы), просто вызовите

 StartActivityForResult(Intent intent, int requestCode);
 

а затем, когда время для отображения информации заполнено, просто завершите только что созданное действие и вызовите

 SetResult(int resultCode);
 

и вы возвращаетесь к своему второму действию, отображающему то же, что и до отображения окна оповещения.

Комментарии:

1. Это модифицирующая кнопка в определенной строке. Как мы можем передать намерение в эту строку?

Ответ №2:

Что вам нужно сделать, это:

Импортируйте необходимую библиотеку:

 import android.app.Activity;
 

В вашем дополнительном действии вы определяете:

 public static Activity myActivity;
 

Затем, в вашем основном действии, вы говорите:

 SecondaryActivityName.myActivity=this;
 

Наконец, когда вы хотите вызвать эту кнопку основного действия из вторичного:

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

Комментарии:

1. но это не кнопка. Это окно предупреждения. Как мы можем присвоить ей идентификатор.?

Ответ №3:

Что вы могли бы сделать, это написать функцию проверки и привязать к ней обе эти кнопки, все зависит от того, что вам нужно сделать. Таким образом, вы создаете служебный класс, который обрабатывает проверку и т. Д., Но привязывает обе кнопки к действиям.Главная страница и действия.Указания к операции A в классе утилиты.