Изменение TextView между действиями

Итак, у меня есть проект со следующими действиями: MainActivity/GetJson/TimerActivity.

GetJson активность:

public class GetJson extends AppCompatActivity     {
    String JSON_STRING;
    String json;

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



    public void getJSON(View view){
        new BackgroundTask().execute();
    }


    public class BackgroundTask  extends AsyncTask<Void,Void,String>  {
        String json_url;



        @Override
        protected void onPreExecute() {
            json_url="http://10.10.103.36/projet/php/fichier.php";

        }

        @Override
        protected String doInBackground(Void... params) {
            try {
                URL url=new URL(json_url);
                HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();
                InputStream inputStream=httpURLConnection.getInputStream();
                BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
                StringBuilder stringBuilder=new StringBuilder();
                while  ((JSON_STRING= bufferedReader.readLine())!=null){
                    stringBuilder.append(JSON_STRING+"\n");
                }

                bufferedReader.close();
                inputStream.close();;
                httpURLConnection.disconnect();
                return stringBuilder.toString().trim();

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(String result) {

            json=result;

        }



    }
}

Таймер активности

public class TimerActivity extends Activity {

    private TextView test;
    String msg = "Hey";

    private Handler mHandler = new Handler();





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        test = (TextView) findViewById(R.id.compteur);
        Timer timer = new Timer();
        TimerTask tt = new TimerTask()
        {
            @Override
            public void run()
            {
                test.setText(msg); 
            }
        };

        timer.scheduleAtFixedRate(tt,5000,1000);  // Delay 5 seconds on the first run
        // then run every second
        test.setText(msg);


        setContentView(R.layout.activity_main);
    }


}

В моем основном действии xml я получил 2 textview: - compteur: для отображения текста из моей активности timer - textViewJson: для отображения моего json

Я думаю, что мои методы получения json (из GetJson) и отображения текста (из TimerActivity) верны. Но проблема в том, что я не могу установить Text из других действий в свою основную деятельность. У меня нет проблем с компиляцией, но мой textView не обновляется. Я пытался как в GetJson, так и в TimerActivity просто сделать:

TextView test;
test = (TextView) findViewById(R.id.compteur);
test.setText(msg);

Чтобы проверить, могу ли я изменить текст textview, даже не используя возвращаемые значения, и ничего не происходит.

Любые идеи ?

Хорошего дня !


person AlexMel    schedule 14.02.2017    source источник
comment
Пожалуйста, четко укажите, в чем ваша проблема и что вы хотите   -  person android_jain    schedule 14.02.2017
comment
Я хочу отобразить результат json в моем макете MainActivity в текстовых представлениях и изменить текст текстового представления каждые 5 секунд. Проблема, как я пытался объяснить (мой английский не так хорош), заключается в том, что я не могу изменить текст textview из других действий. Пример: измените мой TextViewJson (в макете mainActivity) из моей активности GetJson.   -  person AlexMel    schedule 14.02.2017
comment
Итак, у вас есть данные json parsh, которые означают, какие данные вы хотите установить в текстовом представлении???   -  person android_jain    schedule 14.02.2017
comment
или там, где вы столкнулись с проблемой, это большая тема   -  person android_jain    schedule 14.02.2017
comment
Вы не должны менять текст активности из другой активности, потому что это может создать много проблем (самая заметная из них — это когда первая активность уничтожается, и вы пытаетесь получить к ней доступ). Чтобы решить вашу проблему, узнайте, как правильно взаимодействовать между действиями stackoverflow.com/documentation/android/103/intent/533/   -  person Iulian Popescu    schedule 14.02.2017
comment
я получаю данные из своей активности GetJson и хочу отобразить эти данные в текстовом представлении с идентификатором: TextViewJson, который находится в файле activity_main.xml.   -  person AlexMel    schedule 14.02.2017
comment
не создавайте Activty для разбора json или делайте в фоновом режиме простой класс java или внутренний класс Asyncktask и вызывайте   -  person android_jain    schedule 14.02.2017
comment
#lulian Popescu Я собираюсь прочитать вашу ссылку, спасибо за попытку помочь мне   -  person AlexMel    schedule 14.02.2017
comment
на другой активности, если вы звоните, есть отдельный метод для активности и пользовательского интерфейса   -  person android_jain    schedule 14.02.2017
comment
создать простой общедоступный класс Java без расширения Activity   -  person android_jain    schedule 14.02.2017
comment
в вашей деятельности сделайте объект этого вызова класса и используйте   -  person android_jain    schedule 14.02.2017
comment
Возможный дубликат Как обновить TextView для действие из другого класса   -  person Istiak Morsalin    schedule 14.02.2017


Ответы (1)


Когда у вас есть информация, которую вы хотите показать на своих телевизорах, вы должны сохранить ее где-нибудь и загрузить при создании своей активности. Вы не можете изменить состояние представлений в уничтоженном действии. Используйте намерения (putExtra();) для передачи данных между действиями или используйте SharedPreferences.

person T.Dimitrov    schedule 14.02.2017