Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Qt Android and Native Date/TimePickerDialog Appear Different

Qt Android and Native Date/TimePickerDialog Appear Different

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
1 Posts 1 Posters 805 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I Offline
    I Offline
    Ibrahim
    wrote on last edited by Ibrahim
    #1

    Hi; I wrote Date/TimePickerDialog code in Android/Java. Then when I ran this code with Android Studio on Android 6.0, I see: Android Native Image. Then when I ran this code in Qt / C++, I see: Android Qt Image. Java native code is same but Android native and Qt are differents. Also test device is same (Android 6.0 Phone). Why is different same code is running with Android native and Qt?

    Picker.java:

    package com.xxx.qttest;
    
    import java.util.Calendar;
    import android.app.DatePickerDialog;
    import android.app.TimePickerDialog;
    import android.widget.DatePicker;
    import android.widget.TimePicker;
    import android.widget.Toast;
    import android.content.Context;
    
    public class Picker extends org.qtproject.qt5.android.bindings.QtActivity
    {
        private static Calendar calendar = Calendar.getInstance();
        private static String date, time;
        private static Context c;
    
        public Picker()
        {
        }
    
        public static String datePickerDialog(Context context)
        {
            c = context;
            DatePickerDialog datePickerDialog = new DatePickerDialog(c,
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                            date = i2 + "/" + i1 + "/" + i;
                            Toast.makeText(c, date, Toast.LENGTH_LONG).show();
                        }
                    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
            datePickerDialog.show();
    
            return date;
        }
    
        public static String timePickerDialog(Context context)
        {
            c = context;
            TimePickerDialog timePickerDialog = new TimePickerDialog(c,
                    new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker timePicker, int i, int i1) {
                            time = i + " : " + i1;
                            Toast.makeText(c, time, Toast.LENGTH_LONG).show();
                        }
                    }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false);
            timePickerDialog.show();
    
            return time;
        }
    }
    

    My test.h file:

    #ifndef TEST_H
    #define TEST_H
    
    #include <QObject>
    #include <QtAndroid>
    #include <QAndroidJniObject>
    
    class Test : public QObject
    {
      Q_OBJECT
    public:
      explicit Test(QObject* parent = 0);
      Q_INVOKABLE QString datePickerDialog() const;
      Q_INVOKABLE QString timePickerDialog() const;
    
    signals:
    
    public slots:
    };
    
    #endif
    

    My test.cpp file:

    #include "test.h"
    
    Test::Test(QObject* parent) : QObject(parent)
    {
    }
    
    QString Test::datePickerDialog() const
    {
      QAndroidJniObject datePickerDialog;
      QtAndroid::runOnAndroidThread([&]()
      {
        datePickerDialog = QAndroidJniObject::callStaticObjectMethod(
            "com/xxx/qttest/Picker",
            "datePickerDialog",
            "(Landroid/content/Context;)Ljava/lang/String;",
            QtAndroid::androidActivity().object());
      });
    
      return datePickerDialog.toString();
    }
    
    QString Test::timePickerDialog() const
    {
      QAndroidJniObject timePickerDialog;
      QtAndroid::runOnAndroidThread([&]()
      {
        timePickerDialog = QAndroidJniObject::callStaticObjectMethod(
            "com/xxx/qttest/Picker",
            "timePickerDialog",
            "(Landroid/content/Context;)Ljava/lang/String;",
            QtAndroid::androidActivity().object());
      });
    
      return timePickerDialog.toString();
    }
    

    I want calendar such as Android Native Calendar with Qt, not spinner. How can I do it? Thanks.

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved