пятница, 14 мая 2010 г.

android. приложение-мастер (страницы, переходы по кнопкам). activities

чтобы не забыть.

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

по собственному опыту (возможно, решение далеко от оптимального) - основываться на Activities (собственно окна, обладают функуиональностью, которую в не наследующих от Activity классах можно получить только
при помощи контекста класса, от неё наследующего). из активностей создавать кнопки, функционал - в листенерах кнопок.

1. активность


public class Register extends Activity{
public void createControls(){
try{
//сохранение контекста
Common.setContextRegister(this);
// выбрать xml с интерфейсом
setContentView(R.layout.register_page);
ButtonsHolder.setBackBtn(new BackBtn( (Button) findViewById(R.id.backFromRegisterBtn), this));
}
catch (Exception e){
e.printStackTrace();
Common.showAlert("произошла ошибка: "+e.toString(), this);
}
}

2. прописать активность в AndroidManifest.xml

android:label="@string/app_name">
android:label="@string/app_name">


3.
Контексты активностей (this) сохранять отдельно, основываясь на них, завершать активности (например, по нажатию кнопок):

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
* кнопка "назад"
*
*/
public class BackBtn extends AbstractBtn{

private Context contextToClose;
public BackBtn(Button btn, Context contextToClose) {
super(btn);
this.contextToClose = contextToClose;
}
@Override
protected void addListener() {
btn.setOnClickListener(new OnClickListener() {
// обработка нажатия кнопки
public void onClick(View arg0) {
((Activity)contextToClose).finish();
}
});
}

}
4. запускать новые активности - например, тоже по нажатию кнопок. примерно так:

//запуск активности
Intent passInfo = new Intent();
passInfo.setClassName("ru.diasoft.repareMyStreet", "ru.diasoft.repareMyStreet.Register");
Common.getContextStartPage().startActivity(passInfo);


5. да, google maps. MapActivity - тоже активность

public class Map extends MapActivity {
...
}

или
public class Smth extends Activity {
...
}

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

Отправить комментарий