ljwbupt 2015-04-18 00:42 采纳率: 90%
浏览 1639
已采纳

Android编程两activity间切换问题

LZ手头一个Android程序有两个activity,其中副activity主要就是画个图,且画图需要使用主activity中的一个数组的数据,我明明是先把有关数值填进了数组,完成了数组的处理之后才用intent开启的第二个activty,但实际上副activity使用的还是数组在未处理前的全零状态进行的与画图有关的运算,代码如下

主activity的声明

``` private LayoutInflater layoutInflater;
private View activity_main;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    layoutInflater = LayoutInflater.from(this);
    activity_main = layoutInflater.inflate(R.layout.activity_main, null);       
    setContentView(activity_main);

副activity

```protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyView(this));
    }

    class MyView extends View
    {
        //effect 为路径效果(折线,曲线等)
        PathEffect effect= new PathEffect();
        private int[] colors;
        private Paint paint;
        private Path path;
        private int widthScr;
        private int heightScr;
        private MainActivity mainAc;
        public MyView(Context context){
            super(context);
            mainAc=new MainActivity();

            Display mDisplay = getWindowManager().getDefaultDisplay();
            widthScr = mDisplay.getWidth();
            heightScr= mDisplay.getHeight();
            paint = new Paint();
            paint.setStyle(Paint.Style.STROKE);

            paint.setStrokeWidth(8);
            waitMain();
            path=new Path();
            path.moveTo(xAxis, yAxis);  
            for (int j=0; j<10;j++){
                    path.lineTo( j*75 + xAxis , j*75 + yAxis);//自动生成坐标,并画出路径            
            }           
        }
            private void waitMain() {
            // TODO Auto-generated method stub
                if(mainAc.startPaint[0] == 1){
                    xAxis = widthScr/2;
                    yAxis = heightScr/2;
                }else{
                    xAxis = 0;
                    yAxis = 0;
                }

        }
            @SuppressLint("DrawAllocation")
            @Override
            protected void onDraw (Canvas canvas){          
                canvas.drawColor(Color.BLACK);//画布背景为黑色
                effect=new CornerPathEffect(10);//选择曲线效果
                paint.setPathEffect(effect);
                paint.setColor(Color.WHITE);
                canvas.drawPath(path, paint);

                invalidate();
            }   

        }

两activity之间切换,MyPaint就是副activity的名字

``` Intent intent = new Intent(this,MyPaint.class);
startActivity(intent);


LZ乃Android入门菜鸡,求问这bug是为啥?该怎么改?求大神指点

  • 写回答

4条回答 默认 最新

  • danielinbiti 2015-04-18 00:56
    关注

    mainAc=new MainActivity();这算什么呀,建议去看看基础,android开发没java基础也不行。

    Intent intent = new Intent(this,MyPaint.class);
    startActivity(intent);
    数组在切换的时候传递

     Bundle map = new Bundle();
    map.putSerializable("alistdata", new int[]{15,2,12,2});
    map.putSerializable("ad",new String[]{"5","6"});
    intent.putExtra("sd", map);
      对应的接收:
    (int[])this.getIntent().getBundleExtra("sd").getSerializable("alistdata")
    (String[])this.getIntent().getBundleExtra("sd").getSerializable("ad")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算