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);”行出现错误 说“SingleTouchEventView 类型的方法 setContentView(LinearLayout) 未定义”
我必须在此活动上放置一个按钮,以便人们可以返回上一个活动。

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

然后在您的活动中,设置您的内容视图,如下所示:

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

类视图中没有称为 setContentView() 的方法..所以你得到这样的错误......

为了消除该错误,请创建您的 mainactivity 的实例并使用 thatone 调用此方法。

例如,如果您的主要活动是 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 回答