use*_*445 1 android nullpointerexception imageview
我对这个简单的代码有疑问.我正在尽一切可能,但setContent(R.layout.main)总是会导致错误.如果我尝试调试代码svgView =(SVGView),则findViewById(R.id.svgview)值始终为null.
这是我的代码:
SVGViewActivity.java:
package android.svgview;
import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGParser;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
public class SVGViewActivity extends Activity {
/** Called when the activity is first created. */
private SVGView svgView;
private ViewListener viewListener;
private ViewState viewState;
private SVG svg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
svgView = (SVGView)findViewById(R.id.svgview);
viewListener = new ViewListener();
viewState = new ViewState();
svgView.setViewState(viewState);
svgView.setOnTouchListener(viewListener);
viewListener.setViewState(viewState);
svg = SVGParser.getSVGFromResource(getResources(), R.drawable.android);
svgView.setImageDrawable(svg.createPictureDrawable());
svgView.setBackgroundColor(Color.WHITE);
}
}
Run Code Online (Sandbox Code Playgroud)
SVGView.java
package android.svgview;
import java.util.Observable;
import java.util.Observer;
import android.content.Context;
import android.graphics.Canvas;
import android.widget.ImageView;
public class SVGView extends ImageView implements Observer {
private ViewState viewState;
public SVGView(Context context) {
super(context);
}
public void setViewState(ViewState viewState){
if(this.viewState==null){
this.viewState = viewState;
this.viewState.addObserver(this);
}
}
protected void onDraw(Canvas canvas){
canvas.scale(1.0f, 1.0f);
canvas.translate(viewState.getX(), viewState.getY());
super.onDraw(canvas);
}
public void update(Observable observable, Object data) {
invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
和main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.svgview.SVGView
android:id="@+id/svgview"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
当我改变svgView = (SVGView)findViewById(R.id.svgview);
了svgView = new SVGView(this);
,然后setContentView(R.layout.main);
为setContentView(svgView);
一切工作正常.但是使用main.xml会导致错误.
我尝试了清理并重新编译项目,在新的eclipse安装中编译它所有更新但没有效果.我不知道问题出在哪里: - /
您可能需要在以下内容中提供此构造函数SVGView.java
:
public SVGView(Context context AttributeSet atrs ) {
super(context, atrs);
}
Run Code Online (Sandbox Code Playgroud)
然后将xml文件中的声明更改为:
<android.svgview.SVGView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/svgview" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1615 次 |
最近记录: |