2017-02-14 58 views
1

所以我得到了一個具有以下活動的項目:MainActivity/GetJson/TimerActivity。更改活動之間的TextView

的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:顯示從我timeractivity 文本 - textViewJson:顯示我的json

我想我的方法來獲取JSON(從GetJson)和顯示文本(從TimerActivity)是正確的。但問題是我無法將其他活動的文本設置爲我的主要活動。 我沒有任何編譯問題,我的textView沒有得到更新。 我想無論是在的getJSON和TimerActivity只是做:

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

爲了檢查,如果我可以改變TextView的文本,甚至沒有使用返回的值,並沒有任何反應。

任何想法?

祝您有美好的一天!

+0

請明確註明你的問題,你想 –

+0

我想在我的MainActivity佈局TextView顯示我的JSON結果,並改變一個TextView的文本每5秒什麼。我試圖解釋的問題(我的英語不是那麼好),是因爲我無法從其他活動中更改文本視圖的文本。例如:從我的GetJson活動中更改我的TextViewJson(在mainActivity佈局中) – AlexMel

+0

ok,因此您擁有json parsh數據意味着您要在文本視圖中設置哪些數據正在進行配置? –

回答

1

一旦你有你想要在電視上顯示的信息,你應該將它保存在某個地方並在你的Activity創建時加載它。您無法更改已銷燬活動中的視圖狀態。使用意圖(putExtra();)到您的活動之間傳遞數據,或使用SharedPreferences