更改方向后重新启动应用程序(Oncreate)

young_08

我的应用程序中有一个计时器,如果在所有4个方向上都改变了方向我想重新启动计时器我尝试通过添加Onconfigurationchanged()方法来实现,但它没有调用并为我工作。

MainActivity.class

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("tag","oncreate changed");
        setContentView(R.layout.activity_main);
        timer = (AppCompatEditText)findViewById(R.id.editText);
        totalHoursText = (TextView)findViewById(R.id.totalhoursText);
        startButton = (Button)findViewById(R.id.button);
        stopButton = (Button)findViewById(R.id.button1);
        totalHoursText.setVisibility(View.INVISIBLE);

        startButton.setOnClickListener(this);
        stopButton.setOnClickListener(this);
        handler = new Handler();


    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i("tag", "orientation changed");

        int orientation = newConfig.orientation;
        switch (orientation) {
            case Configuration.ORIENTATION_LANDSCAPE:
                Log.i("tag", "orientation changed landscape");
                // Checks the orientation of the screen
                if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                    Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
                } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
                    Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
                }
        }
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button :
                Time time = new Time();
                time.setToNow();
                flag=true;
                startTime = time.toMillis(false);
                handler.postDelayed(updateTimerThread,0);
                totalHoursText.setVisibility(View.INVISIBLE);

                break;

            case R.id.button1:
                timer.setText("00:00");
                flag=false ;
                handler.removeCallbacksAndMessages(updateTimerThread);
                break;
        }

    }


    private Runnable updateTimerThread = new Runnable() {

        String str;
        public void run() {


            if(flag) {
                Time time = new Time();
                time.setToNow();

                timeInMilliseconds = time.toMillis(false) - startTime;
                updatedTime = timeSwapBuff + timeInMilliseconds;


                int secs = (int) (updatedTime / 1000);
                int mins = secs / 60;
                secs = secs % 60;
                int milliseconds = (int) (updatedTime % 1000);


                int sec = (int) (updatedTime / 1000) % 60;
                int min = (int) ((updatedTime / (1000 * 60)) % 60);
                int hr = (int) ((updatedTime / (1000 * 60 * 60)) % 24);

                 str = "" + String.format("%02d", hr) + ":"
                        + String.format("%02d", min) + ":"
                        + String.format("%02d", sec);


                timer.setText("" + String.format("%02d", hr) + ":"
                        + String.format("%02d", min) + ":"
                        + String.format("%02d", sec));

                handler.postDelayed(this, 0);
            }
        else{
                totalHoursText.setVisibility(View.VISIBLE);
                totalHoursText.setText(str);
            }
        }

    };

请帮我提出建议或代码段。

冰茶先生

尝试android:configChanges="orientation|screenSize"将此属性添加到上的activity标签AndroidManifest.xml之后,onConfigurationChanged如果您的设备旋转将触发。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设计应用程序以支持配置更改而无需重新启动

来自分类Dev

更改日志级别而无需重新启动应用程序

来自分类Dev

重新启动后,iOS应用程序无法访问下载的文件-UUID更改

来自分类Dev

更改iOS应用程序语言而无需重新启动设备

来自分类Dev

为什么每次重新启动应用程序时,BluetoothDevice的地址都会更改?

来自分类Dev

阻止IBM RAD在代码更改时重新启动应用程序。

来自分类Dev

Python:在文件更改时自动重新启动WSGIServer + Bottle应用程序

来自分类Dev

如何在设置更改时重新启动我的Android应用程序?

来自分类Dev

在重新启动之前,应用程序看不到系统时区更改

来自分类Dev

应用程序重新启动时,ADFS的ProviderKey更改

来自分类Dev

需要重新启动应用程序才能显示更改吗?

来自分类Dev

在不重新启动应用程序的情况下将本机应用程序LTR响应RTL更改

来自分类Dev

如何在重新启动,按回并更改方向后保留android app imageButton的onClick状态

来自分类Dev

CLLocationManager startMonitoringForRegion:设备重新启动后不重新启动应用程序

来自分类Dev

从终端重新启动bash而不重新启动终端应用程序(mac)?

来自分类Dev

如何在Qt中重新启动应用程序?

来自分类Dev

以编程方式重新启动应用程序?

来自分类Dev

用singleTop重新启动MainActivity或应用程序。

来自分类Dev

单击通知时重新启动应用程序

来自分类Dev

崩溃后如何重新启动Qt应用程序?

来自分类Dev

ServiceStack自托管应用程序重新启动

来自分类Dev

如何调试应用程序重新启动的原因

来自分类Dev

重新启动应用程序后导航栏缩小

来自分类Dev

重新启动应用程序后保存布尔状态

来自分类Dev

如何重新启动pyqt应用程序?

来自分类Dev

ImageResizer重新启动应用程序池

来自分类Dev

在InterstitialAd之后,Android应用程序重新启动

来自分类Dev

在Android测试中重新启动应用程序

来自分类Dev

杀死后如何重新启动Cordova应用程序

Related 相关文章

  1. 1

    设计应用程序以支持配置更改而无需重新启动

  2. 2

    更改日志级别而无需重新启动应用程序

  3. 3

    重新启动后,iOS应用程序无法访问下载的文件-UUID更改

  4. 4

    更改iOS应用程序语言而无需重新启动设备

  5. 5

    为什么每次重新启动应用程序时,BluetoothDevice的地址都会更改?

  6. 6

    阻止IBM RAD在代码更改时重新启动应用程序。

  7. 7

    Python:在文件更改时自动重新启动WSGIServer + Bottle应用程序

  8. 8

    如何在设置更改时重新启动我的Android应用程序?

  9. 9

    在重新启动之前,应用程序看不到系统时区更改

  10. 10

    应用程序重新启动时,ADFS的ProviderKey更改

  11. 11

    需要重新启动应用程序才能显示更改吗?

  12. 12

    在不重新启动应用程序的情况下将本机应用程序LTR响应RTL更改

  13. 13

    如何在重新启动,按回并更改方向后保留android app imageButton的onClick状态

  14. 14

    CLLocationManager startMonitoringForRegion:设备重新启动后不重新启动应用程序

  15. 15

    从终端重新启动bash而不重新启动终端应用程序(mac)?

  16. 16

    如何在Qt中重新启动应用程序?

  17. 17

    以编程方式重新启动应用程序?

  18. 18

    用singleTop重新启动MainActivity或应用程序。

  19. 19

    单击通知时重新启动应用程序

  20. 20

    崩溃后如何重新启动Qt应用程序?

  21. 21

    ServiceStack自托管应用程序重新启动

  22. 22

    如何调试应用程序重新启动的原因

  23. 23

    重新启动应用程序后导航栏缩小

  24. 24

    重新启动应用程序后保存布尔状态

  25. 25

    如何重新启动pyqt应用程序?

  26. 26

    ImageResizer重新启动应用程序池

  27. 27

    在InterstitialAd之后,Android应用程序重新启动

  28. 28

    在Android测试中重新启动应用程序

  29. 29

    杀死后如何重新启动Cordova应用程序

热门标签

归档