【问题标题】:Android - restart part from onCreateAndroid - 从 onCreate 重新启动部分
【发布时间】:2016-12-06 20:12:45
【问题描述】:

在我的程序中,我正在创建用列表中的随机颜色填充的形状。颜色在 onCreate 中设置。我不希望它具有确定的颜色,而是要多次更改颜色。如何“重新启动” onCreate 部分,以便重新分配颜色?

public class MainActivity extends Activity implements OnGestureListener
{       
            private Paint paint = new Paint();


            @Override
            protected void onCreate(Bundle savedInstanceState)
            {   
                super.onCreate(savedInstanceState);                       
                setContentView(R.layout.activity_main);                           
                Canvas canvas = new Canvas(bg); 

                List<Integer> numbers = Arrays.asList(Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW);
                Collections.shuffle(numbers);

            }
}

【问题讨论】:

  • 你想什么时候改变颜色?当activity重新启动,回到前台,点击按钮...?
  • 看看这些问题:question1question2,也许这就是你要找的。​​span>
  • 我有一个动画部分我在这里遗漏了,当动画完成后颜色应该再次交换。但是,如果您告诉我如何使用按钮来执行此操作,我会将其设置为动画

标签: java android


【解决方案1】:

这里有窍门,调用这个方法

loadColors();

在 oncreate 和其他任何你想要的地方

public class MainActivity extends Activity implements OnGestureListener
{       
            private Paint paint = new Paint();


            @Override
            protected void onCreate(Bundle savedInstanceState)
            {   
                super.onCreate(savedInstanceState);                       
                setContentView(R.layout.activity_main);                           
                Canvas canvas = new Canvas(bg); 

                loadColors();

            }



         private void loadColors(){
            List<Integer> numbers = Arrays.asList(Color.RED, Color.BLUE,                      
Color.GREEN, Color.YELLOW);
                 Collections.shuffle(numbers);
    }
    }

【讨论】:

  • 我想试试你的代码,但我在 onCreate 中创建了引用 numbers 的形状,所以如果我将它从 onCreate 部分中取出,我会收到错误。那你的方法可行吗?
【解决方案2】:

这可能会对您有所帮助,只需输入您的 onResume 或您要从中重新启动 oncreate 的方法

onCreate(new Bundle()); 

例如通过单击这样的按钮

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onCreate(new Bundle()); 
        }
});

【讨论】:

  • 您能否提供更多关于其中包含什么内容的信息?
【解决方案3】:

如果您在从一个活动导航到另一个活动时尝试更改颜色,那么您可以尝试包装您的代码以更改函数中的颜色并在 onResume() 中调用该函数(生命周期方法之一活动)。每次加载活动时都会调用 onResume()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    相关资源
    最近更新 更多