У меня есть mainActivity - Customer.java со списком 5 различий.деятельность.Мне удалось открыть все 5 действий, когда я нажимаю на них, но когда я нажимаю кнопку «назад» (кнопка устройства), чтобы вернуться к основной активности, это выдаст мне ошибку, которую вы увидите в кодах отладки / logcat.У меня есть 2 примера активности под моим основным экраном (выход из системы и часы).
Бонус: еще одна вещь, которую я хотел бы получить, - это когда я нажимаю кнопку «clockinActivity», я хочу, чтобы она отправляла текущее время и дату на веб-сервер (у меня уже есть класс customhttp в моем проекте) и автоматическивернитесь на главный экран.
Я прочитал
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
http://android -developers.blogspot.com / 2009/12 / back-and-other-hard-keys-three-story.html
Также, похоже, этот не работает
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
//do smth
}
return super.onKeyDown(keyCode, event);
}
Customer.java
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class Customer extends ListActivity
{
TextView selection;
CustomerListItem[] items = {
new CustomerListItem("Start Trip", StartTripActivity.class),
new CustomerListItem("Clock in", ClockinActivity.class),
new CustomerListItem("Customer Svc", CustomerSvcActivity.class),
new CustomerListItem("Independent Inspection", InspectionActivity.class),
new CustomerListItem("Pick Up", PickUpActivity.class),
new CustomerListItem("Log Out", LogoutActivity.class)};
private TextView resultsTxt;
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<CustomerListItem>(
this, android.R.layout.simple_list_item_1, items));
selection = (TextView) findViewById(R.id.selection);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
final Intent intent = new Intent(this, items[position].getActivity());
startActivityForResult(intent, position);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK)
{
// Perform different actions based on from which activity is
// the application returning:
switch (requestCode)
{
case 0:
// TODO: handle the return of the StartTripActivity
break;
case 1:
// TODO: handle the return of the ClockinActivity
break;
case 2:
// TODO: handle the return of the CustomerSvcActivity
case 3:
// TODO: handle the return of the InspectionActivity
break;
case 4:
// TODO: handle the return of the PickUpActivity
break;
case 5:
// TODO: handle the return of the LogoutActivity
break;
default:
break;
}
}
else if (resultCode == RESULT_CANCELED)
{
resultsTxt.setText("Canceled");
}
}
}
ClockinActivity.java
import java.util.Date;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class ClockinActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clockin);
Thread myThread = null;
Runnable runnable = new CountDownRunner();
myThread= new Thread(runnable);
myThread.start();
}
public void doWork() {
runOnUiThread(new Runnable() {
public void run() {
try{
TextView txtCurrentTime= (TextView)findViewById(R.id.lbltime);
Date dt = new Date();
int hours = dt.getHours();
int minutes = dt.getMinutes();
int seconds = dt.getSeconds();
String curTime = hours + ":"+ minutes + ":"+ seconds;
txtCurrentTime.setText(curTime);
}catch (Exception e) {
}
}
});
}
class CountDownRunner implements Runnable{
// @Override
public void run() {
while(!Thread.currentThread().isInterrupted()){
try {
doWork();
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}catch(Exception e){
}
}
Button btn = (Button) findViewById(R.id.btn_OK);
//---event handler for the OK button---
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view) {
Intent data = new Intent();
//---get the EditText view---
// EditText txt_username =
// (EditText) findViewById(R.id.txt_username);
//---set the data to pass back---
// data.setData(Uri.parse(
// txt_username.getText().toString()));
setResult(RESULT_OK, data);
//---closes the activity---
finish();
}
});
}
}
}
Logout.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class LogoutActivity extends Activity {
private Button btnLogout;
private Button btnCancel;
private TextView lblResult;
private EditText code;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logout);
code = (EditText)findViewById(R.id.codeout);
btnLogout = (Button) findViewById(R.id.submit);
btnCancel = (Button) findViewById(R.id.cancel);
lblResult = (TextView)findViewById(R.id.result);
btnLogout.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String logout = code.getText().toString();
if (logout.equals("99999")){
lblResult.setText("Logout successful");
Intent i = new Intent(getApplicationContext(), Login.class);
startActivity(i);
} else {
lblResult.setText("Logout failed");
}
}
});
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), Customer.class);
startActivity(i);
}
});
}}
LogCat
05-19 21: 52: 51.586: WARN / ActivityManager (58): истекло время ожидания запуска, прекращаетсяпробудить замок!05-19 21: 52: 51.586: WARN / ActivityManager (58): время ожидания простоя активности для HistoryRecord {45108f08 com.merrill / .Customer} 05-19 21: 52: 56.799: WARN / ActivityManager (58): время ожидания уничтожения активности дляHistoryRecord {4510cf30 com.merrill / .Clockin}
Отладка
ActivityThread.deliverResults (ActivityThread $ ActivityRecord, List) строка: 3515
ActivityThread.handleSendResult (ActivityThread $ ResultData) строка: 3557
ActivityThread.access $ 2800 (ActivityThread, ActivityThread $ ResultData) строка: 125 ActivityThread $ ResultData (ActivityThread $ H) .handleMessage (Сообщение) строка: 2063
ActivityThread $ H (Обработчик) .dispatchMessage (Сообщение) строка: 99Looper.loop () строка: 123 ActivityThread.main (String []) строка: 4627
Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) строка: не доступно [собственныйmethod]
Method.invoke (Object, Object ...) строка: 521
ZygoteInit $ MethodAndArgsCaller.run () строка: 868
ZygoteInit.main (String []) строка: 626 NativeStart.main (String []) строка: недоступно [собственный метод]