powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Как перезапустить активити
8 сообщений из 8, страница 1 из 1
Как перезапустить активити
    #39026320
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, у меня есть 2 активити. С первого активити при нажатии на кнопку я запускаю второе активити. Во втором активити у меня форма с настройками программы.
Как мне сделать так что после нажатия на кнопку сохранить у меня закроется второе активити и перегрузится первое?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Как перезапустить активити
    #39026345
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай по порядку:
1. onActivityResult
2. startActivityForResult
3. setResult
4. finish
...
Рейтинг: 0 / 0
Как перезапустить активити
    #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
Как перезапустить активити
    #39026773
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкладывай уже весь код, ничего секретного в нем не должно быть.

П.С. В spoiler и в src java, конечно. :-)
...
Рейтинг: 0 / 0
Как перезапустить активити
    #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
Как перезапустить активити
    #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
Как перезапустить активити
    #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
Как перезапустить активити
    #39026815
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxЕще раз большое спасибо!
Не за что, высыпаться нужно. :-)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Как перезапустить активити
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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