3

Android は初めてで、xml でレイアウトを拡張しようとしていますが、RuntimeException が発生します。アクティビティ クラスと SurfaceView を拡張するクラスを除いて、ほとんどすべてを切り取りました。誰が私が間違っているのか教えてもらえますか?

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    
android:layout_width="match_parent"    
android:layout_height="match_parent">    
<com.hj.Panel    
android:id="@+id/SurfaceView01"      
android:layout_width="match_parent"      
android:layout_height="match_parent"/>    
</FrameLayout>

Rita.java:

package com.hj;

import android.app.Activity;
import android.os.Bundle;

public class Rita extends Activity {
/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
}

Panel.java:

package com.hj;

import android.content.Context; 
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceView;

class Panel extends SurfaceView {    
  private Paint mPaint;

  public Panel(Context context) {
    super(context); 
  }  
  @Override
  public void onDraw(Canvas canvas) {          
    mPaint = new Paint();  
    canvas.drawRect(0, 0, 322, 644, mPaint);
  }          
} 
4

2 に答える 2

1

コードを実行するには、次のことを行う必要がありました。

1) 「match_parent」を「fill_parent」に変更します

2) コンストラクターを追加する

  public Panel(Context context, AttributeSet atts) {
    super(context, atts); 
  } 

あなたはそれを試してみたいかもしれません

于 2010-10-04T22:39:25.957 に答える
0

例外を報告するときは、常にスタック トレースを投稿する必要があります。(コマンドラインで adb logcat を実行するか、Eclipse で logcat ウィンドウを表示します)。

それがなければ、match_parent ではなく、fill_parent にすべきだと思います。

于 2010-10-02T21:31:32.300 に答える