2016-04-09 10 views
1

Javaを使用してAndroidスタジオでサーフェイスビューを設定する方法のチュートリアルに従っています。これは私のコードです:メソッドを解決できません(Androidスタジオ(Java)の初心者問題)

setContentView(v); 

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

私はエラーMSG取得しています:

は「法 setContentView(com.example.ben3.pl2.SurfaceViewを解決できません。 OurView) "

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

私はエラーが取得しています:

は、 "メソッドのスーパーを解決することはできません(android.content.Context)" を

缶 "getHolder()メソッドを解決できません"誰も私を助ける?このチュートリアルは2011年のものですので、古いバージョンのASを持っている人と何か関係があるかもしれません。

+0

put v = new OurView(this);前にsetContentView(v); – uguboz

答えて

2

カップルの事を私を維持しようとします。混乱を避けるために、クラスとファイルの名前をMyActivityまたはSurfaceView以外の名前に変更してください。あなた自身が持っていないSurfaceViewandroid.view.SurfaceViewから使いたいので、それをインポートする必要があります。

import android.view.SurfaceView; 

また、あなたはsetContentView()でそれを使用する前OurViewの新しいインスタンスを作成する必要があります。

ここに変更が加えられたコードがあります。

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

はちょうどこの

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

ようsetcontentview方法 前に、あなたのビューをインスタンス化するまでにあなたがここに修正する必要があり

関連する問題