我有一个小问题,那就是我到目前为止的代码:
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphicView(this));
TextView mainLabel = (TextView)findViewById(R.id.title);
mainLabel.setText("Android Circle Path");
}
static class GraphicView extends View{
public GraphicView(Context context){
super(context);
}
@Override
public void onDraw(Canvas canvas){
}
}
}和main.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="30dip"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip">
<TextView
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="20dip"
android:textSize="24.5sp"
android:id="@+id/title">
</TextView>
</LinearLayout>
</LinearLayout>当我试图在onDraw()函数中设置文本时,应用程序崩溃了,我做错了什么?
发布于 2011-05-27 22:47:30
应该使用视图的onDraw方法来单独呈现到该视图。您不应该在另一个视图中调用UI更新方法。将设置标题的代码移到活动的onCreate方法中,因为这只需要做一次。然后在你的自定义视图中画出你的圆圈。此外,由于您的自定义视图没有实现ViewParent,因此不应该使用它来保存标题TextView。重新组织xml以将标题视图移到GraphicsView之外
发布于 2012-05-08 02:49:51
TextView是在该Activity的onCreate方法中创建的局部变量。因此,TextView的作用域仅限于该onCreate方法。您不能在该方法之外访问它。此外,您尝试做的不是正确的方法,在GraphView的onDraw方法中,您应该单独绘制GraphView组件,而不是外部视图或其他任何内容。
https://stackoverflow.com/questions/6153838
复制相似问题