чтобы не забыть.
нигде не встретила информации, как создавать многостраничные приложения, везде только крошечные примеры в один класс длиной.
по собственному опыту (возможно, решение далеко от оптимального) - основываться на 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 {
...
}
Комментариев нет:
Отправить комментарий