Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Как перезапустить активити / 8 сообщений из 8, страница 1 из 1
10.08.2015, 14:35
    #39026320
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
Здравствуйте, у меня есть 2 активити. С первого активити при нажатии на кнопку я запускаю второе активити. Во втором активити у меня форма с настройками программы.
Как мне сделать так что после нажатия на кнопку сохранить у меня закроется второе активити и перегрузится первое?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
10.08.2015, 14:46
    #39026345
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
Читай по порядку:
1. onActivityResult
2. startActivityForResult
3. setResult
4. finish
...
Рейтинг: 0 / 0
11.08.2015, 08:52
    #39026760
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
wadmanЧитай по порядку:
1. onActivityResult
2. startActivityForResult
3. setResult
4. finish
Делал все ка тут
На втором активити при нажатии на кнопку сохранить происходит это:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
saved = (Button)findViewById(R.id.button5);

        View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                if(swch){
                    intent.putExtra("cmd", "list"); 
                }

                setResult(RESULT_OK,intent);
                finish();
            }
        };
        saved.setOnClickListener(onClickListener);



Как видно мне нужно передать данные типа String
В первом активити делаю вот так:
Код: java
1.
2.
3.
4.
5.
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data){

        Log.d("test", "requestCode = " + requestCode + ", resultCode = " + resultCode+" data = "+data.getStringExtra("cmd"));
    }


В логах у меня получается строка
Код: java
1.
requestCode = 0, resultCode = -1 data = null


Я так понимаю должно быть так
Код: java
1.
data = list


но приходит null
...
Рейтинг: 0 / 0
11.08.2015, 09:10
    #39026773
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
Выкладывай уже весь код, ничего секретного в нем не должно быть.

П.С. В spoiler и в src java, конечно. :-)
...
Рейтинг: 0 / 0
11.08.2015, 09:36
    #39026794
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
wadmanВыкладывай уже весь код, ничего секретного в нем не должно быть.

П.С. В spoiler и в src java, конечно. :-)
Да в общем то ничего сложного, в первой активити есть actionbar на нем есть 2 пункта меню:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
       // int id = item.getItemId();

        //noinspection SimplifiableIfStatement


        switch (item.getItemId()){
            case R.id.action_phone:
                Toast.makeText(activity,"телефон",Toast.LENGTH_LONG).show();
                return true;
            case R.id.search:

                Intent intent = new Intent(this, Setting_dialog.class);
                startActivityForResult(intent, request_code);
                

                return true;
        }

        

        return super.onOptionsItemSelected(item);
    }
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data){
//Тут я пытаюсь получить данные со второго активити

        Log.d("test", RESULT_OK + " - requestCode = " + requestCode + ", resultCode = " + resultCode+" data = "+data.getStringExtra("cmd"));


    }


Как видно, по клику по одному из пунктов меню, создается второе активити результат которого нужно вернуть назад в виде строки.
Вот код второго активити:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Setting_dialog extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener{

    public Switch aSwitch;

    public CheckBox numRace;
    public EditText editNumberRace;

    public CheckBox numDay;
    public EditText editDay;

    public Button saved;

    public static Date date;
    public static boolean swch = false;



    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        switch (buttonView.getId()){
            case R.id.switch1:
                if(isChecked){
                    swch = true;
                    numRace.setEnabled(false);
                    //editNumberRace.setEnabled(false);
                    numDay.setEnabled(false);
                    //editDay.setEnabled(false);




                    numRace.setChecked(false);
                    editNumberRace.setText("");
                    numDay.setChecked(false);

                }
                else
                {
                    swch = false;
                   // saved.setEnabled(false);
                    numRace.setEnabled(true);
                    //editNumberRace.setEnabled(true);
                    numDay.setEnabled(true);
                    //editDay.setEnabled(true);



                }
                break;
            case R.id.checkBox:
                if(isChecked){
                    editNumberRace.setEnabled(true);
                    editNumberRace.setFocusable(true);
                }
                else {
                    editNumberRace.setEnabled(false);
                    editNumberRace.setText("");
                }

                break;
        }



    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting_dialog);

        date = new Date();



        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setIcon(R.drawable.logo);
        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        numRace = (CheckBox)findViewById(R.id.checkBox);
        numRace.setOnCheckedChangeListener(this);



        editNumberRace =(EditText)findViewById(R.id.editText2);
        numDay = (CheckBox)findViewById(R.id.checkBox2);

        editDay = (EditText)findViewById(R.id.editText3);
        saved = (Button)findViewById(R.id.button5);

        View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
// тут я пытаюсь вернуть результат по клику на кнопке "сохранить"
                Intent intent = new Intent();
                if(swch){
                    intent.putExtra("cmd", "list");
                }

                setResult(RESULT_OK,intent);
                finish();
            }
        };
        saved.setOnClickListener(onClickListener);

        aSwitch = (Switch)findViewById(R.id.switch1);
        if(aSwitch!=null){
            aSwitch.setOnCheckedChangeListener(this);
        }

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yy");
        editDay.setText(simpleDateFormat.format(date));







    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_setting_dialog, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

...
Рейтинг: 0 / 0
11.08.2015, 09:40
    #39026796
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
Ну а дебаг сюда заходит?
VaneS Ri_lax
Код: java
1.
2.
3.
4.
5.
        switch (buttonView.getId()){
            case R.id.switch1:
                if(isChecked){
                    swch = true;
                    numRace.setEnabled(false);


Или убери это условие:
VaneS Ri_lax
Код: java
1.
2.
3.
                if(swch){
                    intent.putExtra("cmd", "list");
                }
...
Рейтинг: 0 / 0
11.08.2015, 09:54
    #39026807
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
wadmanНу а дебаг сюда заходит?
VaneS Ri_lax
Код: java
1.
2.
3.
4.
5.
        switch (buttonView.getId()){
            case R.id.switch1:
                if(isChecked){
                    swch = true;
                    numRace.setEnabled(false);



Или убери это условие:
VaneS Ri_lax
Код: java
1.
2.
3.
                if(swch){
                    intent.putExtra("cmd", "list");
                }



Как я мог это пропустить, просто во втором активити у меня есть элемент Switch и так переменная это было его состояние вкл или откл. Ошибка была в том что я по умолчанию делаю его вкл, а вот переменную swch делаю по умолчанию false.
И если ничего не переключать и сразу нажать сохранить выходит вот такая ошибка.
Еще раз большое спасибо!
...
Рейтинг: 0 / 0
11.08.2015, 10:13
    #39026815
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перезапустить активити
VaneS Ri_laxЕще раз большое спасибо!
Не за что, высыпаться нужно. :-)
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Как перезапустить активити / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]