2017-02-14 53 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