首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setContentView(视图)与setContentView(R.layout.)

setContentView(视图)与setContentView(R.layout.)
EN

Stack Overflow用户
提问于 2012-10-30 07:08:56
回答 2查看 3.9K关注 0票数 0

你好,我想做一个应用程序,使用多点触摸支持。

对于多点触摸,我使用的是这段代码

现在,您可以看到有org.metalev.multitouch.photosortr.PhotoSortrActivity活动,代码如下所示

代码语言:javascript
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setTitle(R.string.instructions);
    photoSorter = new PhotoSortrView(this);
    setContentView(photoSorter);
}

会很好的

但是如果我想在我的视图中添加这个视图,我会在上面编写如下代码.

我创建了一个名为activity_main.xml的XML文件

代码语言:javascript
复制
<org.metalev.multitouch.photosortr.PhotoSortrView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</org.metalev.multitouch.photosortr.PhotoSortrView>

在onCreate方法中,我做了如下更改

代码语言:javascript
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setTitle(R.string.instructions);
    photoSorter = new PhotoSortrView(this);
    setContentView(R.layout.activity_main);
}

如果我喜欢这种方式,我会在下面得到一个错误是logcat

代码语言:javascript
复制
10-30 12:15:29.319: E/AndroidRuntime(6652): java.lang.NullPointerException
10-30 12:15:29.319: E/AndroidRuntime(6652):     at org.metalev.multitouch.photosortr.PhotoSortrView$Img.draw(PhotoSortrView.java:274)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at org.metalev.multitouch.photosortr.PhotoSortrView.onDraw(PhotoSortrView.java:86)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.View.draw(View.java:6914)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.View.draw(View.java:6917)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.widget.FrameLayout.draw(FrameLayout.java:357)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
10-30 12:15:29.319: E/AndroidRuntime(6652):     at android.view.ViewGroup.drawChild(ViewGroup.java:1644)

在PhotoSortrView.java文件中,代码如下所示

代码语言:javascript
复制
public void draw(Canvas canvas) {
    canvas.save();
    float dx = (maxX + minX) / 2;
    float dy = (maxY + minY) / 2;
    ---->drawable.setBounds((int) minX, (int) minY, (int) maxX, (int) maxY); // HERE getting drawable == NULL
    canvas.translate(dx, dy);
    canvas.rotate(angle * 180.0f / (float) Math.PI);
    canvas.translate(-dx, -dy);
    drawable.draw(canvas);
    canvas.restore();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-30 07:50:57

唯一的原因可能是drawabledraw() of Img类中使用为null,因为canvas是由系统传递的,而方法中的rest变量是原语。这个变量在load() of Img类中初始化,然后从loadImages() of PhotoSortrView类调用该变量。

现在,我猜您是从活动的loadImages()onResume()中调用photoSorter变量的。但是还有另一个PhotoSortrView实例是通过膨胀布局来创建的。确保您也调用了该实例的loadImages()

票数 1
EN

Stack Overflow用户

发布于 2012-10-30 10:17:51

对翼手的建议我已经解决了如下方法:

代码语言:javascript
复制
  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setTitle(R.string.instructions);
    setContentView(R.layout.activity_main);
    photoSorter = (PhotoSortrView)findViewById(R.id.photoSortView);
}

@Override
protected void onResume() {
    super.onResume();
    photoSorter.loadImages(this);
}

在PhotosorterView.java中,文件代码如下。

代码语言:javascript
复制
    public PhotoSortrView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public PhotoSortrView(Context context) {
    super(context);
    init(context);
}

public PhotoSortrView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13134244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档