1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Threads 2 Klassen 1 Layout

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Apfel3, 15.04.2012.

  1. Apfel3, 15.04.2012 #1
    Apfel3

    Apfel3 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Hallo zusammen,

    So langsam verzweifel ich.
    Mein problem ist ich habe eine kleines Programm geschrieben das ein auto steuern soll.
    Zudem wird über ein Webview ein Bild angezeigt das immer neu geladen wird.

    Das ganze funktioniert in einem Thread wunderbar.
    Mein Problem ist aber das der Webview sich irgendwann nicht mehr neu läd.
    Ich hab mich deshalb dazu entscheiden mit 2 Threads zu arbeiten.
    Stark gekürzt sieht das dann so aus



    Code:
     
    public class Steuerung extends Activity {
    /** Called when the activity is first created. */ 
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.steuerung);
    Thread t1 = new Thread( new Kamera() );
    t1. start(); }}
    

    Das funktioniert es wird das Layout steuerung geladen!

    Die Klasse Kamera sieht dann so aus

    Code:
     
    public class Kamera extends Activity implements Runnable {
     private WebView mWebView;
     public void run() {
      
      
    //  public void onCreate(Bundle savedInstanceState) 
    //     {
    //      
    //         
    //         super.onCreate(savedInstanceState);
          // setContentView(R.layout.steuerung);
      
      
            
           mWebView=(WebView)findViewById(R.id.webView1);
    //       mWebView.getSettings().setJavaScriptEnabled(true);
    //       mWebView.getSettings().setAllowFileAccess(true);
    //       mWebView.getSettings().setPluginsEnabled(true);
    //       mWebView.getSettings().setAllowFileAccess(true);
    //       mWebView.getSettings().setAppCacheEnabled(true);
    //       mWebView.getSettings().setDatabaseEnabled(true);
    //       mWebView.getSettings().setJavaScriptEnabled(true);
    //       mWebView.getSettings().setLoadsImagesAutomatically(true);
    //       mWebView.getSettings().setBuiltInZoomControls(true);
     } 
    
    Wenn ich diese Zeile weglasse gibt es keinen Fehler sobald die Zeile drin ist schmiert das programm ab



    Code:
     
    mWebView=(WebView)findViewById(R.id.webView1);
    

    Muss ich denn in der Klasse Kamera irgendwie das Layout nochmal zuweisen oder was mach ich falsch?
     
  2. swordi, 15.04.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    gibts denn im layout steuerung eine webview1 ? ?
     
  3. Apfel3, 15.04.2012 #3
    Apfel3

    Apfel3 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Ja gibt es leider.
    Stimmt das denn mit den Threads so?
    Kann man mit 2 klasen auf ein layout zugreifen?

    Danke schonmal fürs Helfen :)
     
  4. swordi, 15.04.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    achso

    nein das ist blödsinn.

    dein thread führt zwar das runnable aus, aber kennt ja die webview nicht, da oncreate nicht ausgeführt wurde.

    du hast eine activity - möchtest diese aber im thread ausführen. das passt nicht
     
  5. Apfel3, 15.04.2012 #5
    Apfel3

    Apfel3 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Danke zum 2. :)

    onCreate wird ja in der Klasse Steuerung aufgerufen.
    Du hast natürlich recht die Klasse Kamera kennt sie dann nicht.

    Wie kann ich denn dafür sorgen das die Klasse Kamera auch auf das Layout zugreifen kann.

    Ich kann ja in der Klasse Kamera nicht nochmal onCreate machen !?
     
  6. swordi, 15.04.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja du hast irgendwo einen extremen denkfehler

    wenn du das layout der 2. activity in der ersten brauchst, dann schreibst doch dort rein.

    weiß nicht für was du dann ein 2. layout brauchst, wenn du die activity nicht aufrufst.

    versuch nochmal den aufbau einer app zu verstehen, da hast glaub ich noch defizite
     
  7. Apfel3, 15.04.2012 #7
    Apfel3

    Apfel3 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Hmm kann schon sein das ich grad ein Riesen Denkfehler habe.

    Eigentlich wollte ich mit der Klasse Steuerung die Buttons steuern die Verbindung zum Auto aufbauen.

    In dem zweiten Thread ( Klasse Kamera ) das Webview ständig aktualisieren.

    Somit würden die Klasse Steuerung und die Klasse Kamera auf das selbe Layout zugreifen.

    Ich brauche also kein 2. Layout sondern will nur eins
     
  8. swordi, 15.04.2012 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ja prinzipiell nicht schlecht der aufbau

    aber was du klasse nennst, sollte eine klasse sein und nicht jeweils eine activity.

    activity ist immer etwas, was etwas darstellt. eine klasse in dem sinn etwas, die etwas macht
     

Diese Seite empfehlen