在活动之间更改TextView

时间:2017-02-14 08:12:34

标签: java android textview settext

所以我得到了一个包含以下活动的项目: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:显示我的时间性文本 - textViewJson:显示我的json

我认为我获取json(来自GetJson)和显示文本(来自TimerActivity)的方法是正确的。但问题是我无法将其他活动中的文本设置为我的主要活动。 我的textView没有得到更新,我没有任何编译问题。 我在GetJson和TimerActivity中都试过这样做:

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

为了检查我是否可以在不使用返回值的情况下更改textview文本,并且没有任何反应。

有什么想法吗?

祝你有个美好的一天!

1 个答案:

答案 0 :(得分:1)

获得要在电视中显示的信息后,应将其保存在某处并在创建活动时加载。您无法在已销毁的活动中更改视图的状态。使用Intents(putExtra();)在您的Activies之间传递数据或使用SharedPreferences