2017-02-14 6 views
1

So bekam ich ein Projekt mit den folgenden Aktivitäten: MainActivity/GetJson/TimerActivity.Change TextView zwischen Aktivitäten

getJSON Aktivität:

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; 

     } 



    } 
} 

Timer Aktivität

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); 
    } 


} 

In meiner xml Haupttätigkeit bekam i2 Textview: - compteur: einen Text aus meinem timeractivity anzuzeigen - textViewJson: anzuzeigen mein JSON

Ich denke, meine Methoden, JSON (von GetJson) zu erhalten und Text (von TimerActivity) anzuzeigen, sind korrekt . Aber das Problem ist, dass ich Text von anderen Aktivitäten zu meiner Haupttätigkeit nicht setzen kann. Ich habe kein Kompilierungsproblem, aber mein TextView wird nicht aktualisiert. Ich habe versucht, sowohl in getJSON und TimerActivity nur tun:

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

Um zu überprüfen, ob ich die Textview Text ändern kann, ohne auch nur die zurückgegebenen Werte zu verwenden und nichts passiert.

Irgendwelche Ideen?

Guten Tag!

+0

bitte klar erkennen lassen, was Ihr Problem und was Sie –

+0

will ich will mein json Ergebnis in meinem MainActivity-Layout in Textviews anzuzeigen und Text eines Textview jeweils 5s ändern . Das Problem, wie ich versuchte zu erklären (Mein Englisch ist nicht so gut), ist, dass ich Text von Textview nicht von anderen Aktivitäten ändern kann. Bsp: Ändern Sie mein TextViewJson (in mainActivity-Layout) von meiner GetJson-Aktivität – AlexMel

+0

ok, so dass Sie json parsh Daten bedeutet, welche Daten, die Sie in der Textansicht festlegen möchten, kommt ??? –

Antwort

1

Sobald Sie die Informationen haben, die Sie in Ihren Fernsehern anzeigen möchten, sollten Sie sie irgendwo speichern und laden, wenn Ihre Aktivität erstellt wird. Sie können den Status von Ansichten in einer zerstörten Aktivität nicht ändern. Verwenden Intents (putExtra();) Daten zwischen Ihrem Activies zu gelangen oder benutzen SharedPreferences

Verwandte Themen