有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android如何启动新活动

我试着用随机颜色做一个靶心,我会用正方形代替圆圈

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

这是主要活动,是启动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;
    }
}

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

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) 个答案

  1. # 1 楼答案

    您需要确保更改Draw extends Activity 据我所知,你不能意欲从事一项没有布局和创建的新活动。 尝试创建一个扩展Activity的常规活动,并在那里实现绘图

    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类来实现您的绘图需求,并在主屏幕中使用它

  2. # 2 楼答案

    您的Draw类需要extend{}而不是View。当您想要启动一个新的Activity,即Draw类时,这意味着它应该扩展Activity。此外,还需要重写Draw类中的onCreate()

    如果您的Draw类是一个视图,那么我建议您将该视图添加到使用^{}Layout

  3. # 4 楼答案

    你有这个

     public class Draw extends View 
    

    您的类不扩展活动

    相反,您可以按如下操作

    Draw draw = new Draw(this); 
    setContentView(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);
    

    在你的活动中。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);