#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 в классе утилиты.