2016-04-09 8 views
1

Ich befolge eine Anleitung zur Einrichtung einer Oberflächenansicht in Android Studio mit Java. Dies ist mein Code:Methoden können nicht aufgelöst werden (Anfängerproblem in Android Studio (Java))

package com.example.benjamin.labb3; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.SurfaceHolder; 

public class SurfaceView extends Activity { 

    private OurView v; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(v); 
     v = new OurView(this); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     v.pause(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     v.resume(); 
    } 

    public class OurView extends SurfaceView implements Runnable { 

     Thread t = null; 
     SurfaceHolder holder; 
     boolean isOk = false; 

     public OurView(Context context){ 
      super(context); 
      holder = getHolder(); 
     } 

     public void run(){ 
      if(isOk){ 

      } 
     } 

     public void pause(){ 
      isOk = false; 
      while (true){ 
       try { 
        t.join(); 
        t = null; 
        break; 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     public void resume(){ 
      isOk = true; 
      t = new Thread(this); 
      t.start(); 
     } 
    } 
} 

In

setContentView(v); 

ich den Fehler msg bekommen:

„Kann Methode setContentView (com.example.ben3.pl2.SurfaceView nicht lösen. OurView) "

Und in

public OurView(Context context){ 
    super(context); 
    holder = getHolder(); 
} 

ich die Fehler bin immer:

"Die Methode kann nicht Super lösen (android.content.Context)"

"lösen Methode kann nicht getHolder()"

Can jemand mir helfen? Das Tutorial ist von 2011, also könnte es etwas damit zu tun haben, dass sie eine ältere Version von AS haben, oder ich habe gerade etwas verpasst.

+0

setzen v = new OurView (this); vor setContentView (v); – uguboz

Antwort

2

Paar Dinge auf dem Laufenden instanziieren Sie hier beheben sollte. Benennen Sie Ihre Klasse und Datei in MyActivity oder mindestens etwas anderes als SurfaceView um Verwirrung zu vermeiden. Sie möchten die SurfaceView von android.view.SurfaceView nicht Ihre eigenen verwenden, also sollten Sie diese importieren.

import android.view.SurfaceView; 

Außerdem müssen Sie eine neue Instanz von OurView erstellen, bevor es in setContentView() verwenden.

Hier ist Ihr Code mit den Änderungen angewendet.

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 

public class MyActivity extends Activity { 

    private OurView v; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     v = new OurView(this); 
     setContentView(v); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     v.pause(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     v.resume(); 
    } 

    public class OurView extends SurfaceView implements Runnable { 

     Thread t = null; 
     SurfaceHolder holder; 
     boolean isOk = false; 

     public OurView(Context context){ 
      super(context); 
      holder = getHolder(); 
     } 

     public void run(){ 
      if(isOk){ 

      } 
     } 

     public void pause(){ 
      isOk = false; 
      while (true){ 
       try { 
        t.join(); 
        t = null; 
        break; 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     public void resume(){ 
      isOk = true; 
      t = new Thread(this); 
      t.start(); 
     } 
    } 
} 
1

nur versuchen, Ihre Ansicht vor dem setcontentview Methode wie diese

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
v = new OurView(this); 
setContentView(v); 
} 

halten mich

Verwandte Themen