0

setContentView(new SingleTouchEventView(this, null,x) を使用してメインのアクティビティから動的に作成されるアクティビティがあります。このコードを記述しました

public class SingleTouchEventView extends View {

    private Paint paint = new Paint();
    private Path path = new Path();  

    public SingleTouchEventView(Context context, AttributeSet attrs,int x) {  
        super(context, attrs);  
        LinearLayout ll=new LinearLayout(getContext());  
        ll.setOrientation(LinearLayout.VERTICAL);
        Button b=new Button(getContext());
        b.setText("Back");
        ll.addView(b);
        setContentView(ll);
        paint.setAntiAlias(true);
    }
}

しかし、「setContentView(ll);」という行でエラーが発生します。「メソッド setContentView(LinearLayout) は、タイプ SingleTouchEventView に対して定義されていません」
と言って、人が前のアクティビティに戻ることができるように、このアクティビティにボタンを配置する必要があります。

4

3 に答える 3

1

ボタンを追加しないでください。組み込みの[戻る] ボタンに任せるか、カスタム機能が必要な場合はオーバーライドします。ビューを表示するには、おそらくビューではなく、新しいアクティビティ、ダイアログ、またはフラグメントから始める必要があります。

于 2012-05-21T14:09:20.080 に答える
0

このようにしてみてください:

public class SingleTouchEventView extends LinearLayout {

    private Paint paint = new Paint();
    private Path path = new Path();  

    public SingleTouchEventView(Context context) {  
        super(context);  
        this.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams
                                           (MATCH_PARENT, WRAP_CONTENT);
        setLayoutParams(parms);
        Button b=new Button(getContext());
        b.setText("Back"); // better: getContext().getString(R.string.someString);
        this.addView(b);
        b.setLayoutParams(parms);
        paint.setAntiAlias(true);
    }
}

次に、Activity 内で、コンテンツ ビューを次のように設定します。

public void onCreate(Bundle icicle){
    SingleTouchEventView v = new SingleTouchEventView(this);
    setContentView(v);
}
于 2012-05-21T14:04:02.673 に答える
-1

クラスビューには setContentView() というメソッドがありません..そのため、このようなエラーが発生します...

そのエラーを取り除くには、メイン アクティビティのインスタンスを作成し、そのインスタンスでこのメソッドを呼び出します。

主なアクティビティが HomeActivity の場合の例

public class SingleTouchEventView extends View {
private Paint paint = new Paint();
Private HomeActivity custom_view=null;
private Path path = new Path();  
public SingleTouchEventView(Context context, AttributeSet attrs,int x) 
{  
super(context, attrs);  
LinearLayout ll=new LinearLayout(getContext());  
ll.setOrientation(LinearLayout.VERTICAL);
Button b=new Button(getContext());
b.setText("Back");
ll.addView(b);   custom_view.setContentView(ll);
paint.setAntiAlias(true);}}
于 2012-05-21T14:21:17.587 に答える