如何为动态创建的布局添加按钮以返回上一个活动?

时间:2012-05-21 13:48:55

标签: android android-layout

我有一个使用setContentView从主Activity动态创建的活动(新的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”
我必须在此活动上放置一个按钮,以便某人可以返回之前的活动。

3 个答案:

答案 0 :(得分:1)

不要添加按钮。只需让内置的Back按钮执行其操作,或者在需要自定义功能时覆盖它。出于显示View的目的,您可能需要从新的Activity,Dialog或Fragment开始,而不是视图。

答案 1 :(得分: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);
}

答案 2 :(得分:-1)

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

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

示例,如果您的主要活动是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);}}