0

我正在尝试用随机颜色制作牛眼,而不是圆圈,我将使用正方形。

但问题是,当我在模拟器上运行应用程序时,当他启动新活动时,它会停止响应。

这是主要活动,启动 DrawActivity 的活动。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent coiso = new Intent(this, Draw.class);
        startActivity(coiso);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

这就是 Draw 活动,我想开始的活动。(它没有我想做的事情。因为我做不到,问题就在前面)

public class Draw extends View {

    public Draw(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);   
    }
}

有人能帮我吗?对不起英语。

4

4 回答 4

2

你有这个

 public class Draw extends View 

您的课程没有扩展 Activity

相反,您可以执行以下操作

Draw draw = new Draw(this); 
setContentView(draw);

或者有一个线性或相对布局,并将其放置在您喜欢的位置,在初始化后将您的 Draw 视图添加到布局中。

setContentView(R.layout.activity_main);
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout);
// linear layout or relative layout in activity_main.xml.
// place the layout ahere you want along with other views  
Draw draw = new Draw(this); 
ll.addView(draw);  
// add your customview to linearlayout   

编辑:

删除这个

 Intent coiso = new Intent(this, Draw.class);
 startActivity(coiso);

在你的 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
     // customize linear layout to your needs. 
    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:id="@+id/linearLayout"
        android:orientation="vertical" >
    </LinearLayout>
      // other widgets
</RelativeLayout>

在你的 onCreate

setContentView(R.layout.activity_main);
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout);
Draw draw = new Draw(this); 
ll.addView(draw);  
于 2013-09-24T17:41:01.373 回答
0

你的Draw班级需要extend Activity而不是View. 当你想开始一个新ActivityDraw类时,这意味着它应该扩展Activity。此外,您需要onCreate()Draw班级内覆盖。

如果您的 Draw 类是一个视图,那么我建议您将视图添加到Layout您正在使用的视图中addView()

于 2013-09-24T17:42:18.227 回答
0

startActivity 需要一个活动。我建议通过文档 http://developer.android.com/reference/android/app/Activity.html#startActivity(android.content.Intent)

于 2013-09-24T17:43:08.217 回答
0

Draw extends Activity 据我所知,您需要确保您更改您不能打算使用没有布局且没有 OnCreate 的新活动。尝试创建一个常规活动,在那里扩展Activity和实现你的 Draw。

public class DrawActivity extends Activity {

@SuppressLint("ShowToast")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_draw);
    Toast.makeText(DrawActivity.this, "YO", Toast.LENGTH_LONG);
}

并从那里实现你的绘图功能。或创建一个 JAVA 类来实现您的绘图需求并在主屏幕中使用它。

于 2013-09-24T17:52:51.523 回答