Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Android > Кнопка назад |
Автор: jaroslav.zp.ua 09.04.12, 16:16 |
Задача заключаетса сложить две ячейки каждая которая находитьса На разной форме, а на третей форме кнопка с обработчиком и ячейкой вывода результата. Но проблема токова что при обртном возвращении на форму в ячейках пустота, а необходимо чтоб оставались данные в ячейках потому как буду ссылатса на них из других форм. Заранее всем спасибо |
Автор: mrco 09.04.12, 18:24 |
Какая-то не правильная задача. Вам нужно отдельно организовать сохранение значений ячеек. Возможно поможет обработка onSaveInstance/OnRestoreInstace, иначе сохранять куда-то значения в onPause/onResume (например в SharedSettings). |
Автор: Хрен 09.04.12, 19:52 |
Можно передавать данные между активити через интенты: http://developer.android.com/reference/and...roid.os.Bundle) http://developer.android.com/reference/and...tml#getExtras() Но ваще согласен, задача слегка странная. Если каждая активити отвечает за свою переменную, то я бы лучше организовал класс-хранилище с сингтоном для этих самых переменных, и брал их оттуда, когда нужно. |
Автор: jaroslav.zp.ua 09.04.12, 20:25 |
Ребят вот нацарапал проэкт. Активити одна а форм будит много Proba.rar (, : 135) |
Автор: mrco 09.04.12, 21:54 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> public class ProbaActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//----������� ��������� getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,//---- ������ ����� WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); } public void but_vuxod_Click (View v){ new AlertDialog.Builder(this) .setTitle("Ask?") .setMessage("message?") .setNegativeButton(android.R.string.no, null) .setPositiveButton(android.R.string.yes, new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { System.exit(0); }}).create().show(); } public void slog_Click (View v){ EditText a = (EditText)findViewById(R.id.editText_1_id); EditText b = (EditText)findViewById(R.id.editText_2_id); EditText c = (EditText)findViewById(R.id.editText1_otv_id); float aot = Float.parseFloat(a.getText().toString()); float bot = Float.parseFloat(b.getText().toString()); float cot=aot+bot; c.setText(""+cot); } public void but_otv_Click (View v){ setContentView(R.layout.otvetnaia); } public void but_perv_Click (View v){ setContentView(R.layout.pervoia); } public void but_vtor_Click (View v){ setContentView(R.layout.vtoraia); } public void but_nazad_Click (View v){ setContentView(R.layout.main); } public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode==KeyEvent.KEYCODE_BACK){ setContentView(R.layout.main); return true; } return super.onKeyDown(keyCode, event); } } Вот это Цитата public void but_otv_Click (View v){ setContentView(R.layout.otvetnaia); } public void but_perv_Click (View v){ setContentView(R.layout.pervoia); } public void but_vtor_Click (View v){ setContentView(R.layout.vtoraia); } public void but_nazad_Click (View v){ setContentView(R.layout.main); } Абсолютно и совершенно неправильно. setContectView не предназначен для смены разментки в процессе выполнения активити. Собственно я за 3 года разработки для андроида никогда его не использовал ни где кроме как в onCreate. Хотите сменить содержимое активити - запускайте другую активити. Потому у вас ничего не сохраняеться. |
Автор: mrco 09.04.12, 22:00 |
Для каждой формі должна біть своя активти. Смотрите примеры в Android SDK API Demos: - App/Activity/Forwarding - App/Activity/Reorder activities |
Автор: jaroslav.zp.ua 10.04.12, 13:00 |
Ну этот я порядок чтобы необходимо делать с формой свой активрти, а вот чтоб в ячейках быдиданные их необходимо куда-то сохратить а при вызове формы их загружать |
Автор: jaroslav.zp.ua 10.04.12, 20:14 |
Пробывал через интенты чёт не получаетса, подскажите |
Автор: Джонни 11.04.12, 11:55 |
Что не получается? И как может не получится? Добавил в интент, поймал в он криейте, всё. |
Автор: jaroslav.zp.ua 11.04.12, 18:03 |
Есть идея через Preference только пример у меня для одной ячейки, а на две не получаетса, подскажите как добавить Вот код public void Click_save (View v){ saveText(); } public void Click_lond (View v){ loadText(); } void saveText(){ EditText etText = (EditText)findViewById(R.id.editText_id); sPref=getPreferences (MODE_PRIVATE); Editor ed=sPref.edit(); ed.putString(SAVED_TET, etText.getText().toString()); ed.commit(); Toast.makeText(this, "Текст сохранён", Toast.LENGTH_SHORT).show(); } void loadText(){ EditText etText = (EditText)findViewById(R.id.editText_id); sPref=getPreferences (MODE_PRIVATE); String savedText =sPref.getString(SAVED_TET, ""); etText.setText(savedText); Toast.makeText(this, "Текст загружен", Toast.LENGTH_SHORT).show(); } |
Автор: Хрен 11.04.12, 19:19 |
Слушай, вот что тебе мешает сделать класс <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> public class MyStorage { static int m_cellInfo1; static int m_cellInfo2; static int m_cellInfo3; } и сохранять туда данные своих ячеек дабы потом их оттуда забрать? |
Автор: jaroslav.zp.ua 11.04.12, 21:29 |
Тоесть в void saveText и в void loadText() вместо etText запихнуть MyStorage???? |
Автор: Хрен 11.04.12, 22:46 |
Цитата jaroslav.zp.ua @ Тоесть в void saveText и в void loadText() вместо etText запихнуть MyStorage???? Нет. Отдельный класс просто сделай. Со статическими членами. И сохраняй туда значения ячеек. |
Автор: jaroslav.zp.ua 12.04.12, 11:23 |
Извени не понимаю наведи примерчик к моему. Плиззззз |
Автор: Джонни 12.04.12, 12:11 |
jaroslav.zp.ua, зачем ты лезешь в мобайл? ты ж простейших вещей не шаришь. Читай про синглтон. |
Автор: Хрен 12.04.12, 12:45 |
Со статическими членами там даже синглтон не нужен. А в остальном согласен - книжку бы полистать.... |
Автор: jaroslav.zp.ua 12.04.12, 15:22 |
Та листал, просто начинающий. Я так понял m_cellInfo1 это тоже самое что и EditText etText = (EditText)findViewById(R.id.editText_id); Или как его записать в этот класс, немогу понять, или указать в классе что m_cellInfo1 это ячейкак. КАК??? |
Автор: jaroslav.zp.ua 12.04.12, 18:40 |
Всё разобрался *Хрен* болььшое спасибо ты прав всё элементарно. Вот проверь правельно public class SavingActivity extends Activity { SharedPreferences sPref; public static final String EXT_COLS = "cols";//------НАДОБЫЛО ЭТО ДОБАВИТЬ И ВСЁ public static final String EXT_ROWS = "rows";//----- И ЭТО public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void Click_save (View v){ saveText(); } public void Click_lond (View v){ loadText(); } void saveText(){ EditText etText1 = (EditText)findViewById(R.id.editText1_id); EditText etText2 = (EditText)findViewById(R.id.editText2_id); sPref=getPreferences (MODE_PRIVATE); Editor ed=sPref.edit(); ed.putString(EXT_COLS, etText1.getText().toString()); ed.putString(EXT_ROWS, etText2.getText().toString()); ed.commit(); Toast.makeText(this, "Текст сохранён", Toast.LENGTH_SHORT).show(); } void loadText(){ EditText etText1 = (EditText)findViewById(R.id.editText1_id); EditText etText2 = (EditText)findViewById(R.id.editText2_id); sPref=getPreferences (MODE_PRIVATE); String savedText1 =sPref.getString(EXT_COLS, ""); String savedText2 =sPref.getString(EXT_ROWS, ""); etText1.setText(savedText1); etText2.setText(savedText2); Toast.makeText(this, "Текст загружен", Toast.LENGTH_SHORT).show(); } } Извеняюсь за малые знания и глупые вапросы |
Автор: Хрен 12.04.12, 19:56 |
Ох... Ну, да, так тоже можно. Правда, это способ, о котором mrco говорил ещё в начале темы =) |