2016-04-09 22 views
1

Android Studio'da bir Yüzey Görünümü'nin Java kullanılarak nasıl ayarlanacağı konusunda bir eğiticiyi takip ediyorum.Yöntemler çözülemiyor (Android Studio'da yeni başlayanlar (java))

"yöntemini setContentView (com.example.ben3.pl2.SurfaceView çözülemiyor:

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

ben hata msg alıyorum

setContentView(v); 

ediyor: Bu benim kodudur. OurView) "

Ve

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

Ben hatalar alıyorum:

"yöntemi süper çözülemiyor (android.content.Context)"

Can "getHolder() yöntemini çözülemiyor" kimse bana yardım eder mi? Öğretici 2011'den beri eski AS sürümüne sahip biriyle ilgili bir şeyler yapabilirdi ya da belki de bir şeyleri özledim.

+0

put v = new OurView (this); setContentView'dan önce (v); – uguboz

cevap

2

Çift şeyler beni tutmaya çalışın. Karışıklığı önlemek için sınıfınızı ve dosyanızı MyActivity veya en azından SurfaceView'dan başka bir şekilde yeniden adlandırın. SurfaceView'u android.view.SurfaceView'dan kullanmak istemezsiniz, bu yüzden onu almalısınız.

import android.view.SurfaceView; 

Ayrıca, setContentView() kullanmadan önce OurView yeni bir örneğini oluşturmalısınız.

Uyguladığınız değişikliklerin olduğu kodunuz.

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

sadece bu

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

gibi setContentView yöntemiyle önce görünümünüzü instanciate bugüne kadar burada düzeltmek gerekir

İlgili konular