Android - 如何开始新活动

时间:2013-09-24 17:38:46

标签: java android android-activity drawing

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

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

这是主要活动,即启动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 个答案:

答案 0 :(得分:2)

你有这个

 public class Draw extends View 

您的课程不会延长活动

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

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);  

答案 1 :(得分:0)

您的Draw课程需要extend Activity而不是View。由于您要开始新的Activity Draw类,这意味着这应该扩展Activity。此外,您需要覆盖onCreate()类中的Draw

如果您的Draw类是一个视图,那么我建议您使用addView()

将视图添加到您正在使用的Layout

答案 2 :(得分:0)

答案 3 :(得分: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类,并在主屏幕中使用它。