我有一个使用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”
我必须在此活动上放置一个按钮,以便某人可以返回之前的活动。
答案 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);}}