diff --git a/README.md b/README.md index 0899773..a369784 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ React Native date and time pickers for Android #### Step 1 - NPM Install ```shell -npm install --save react-native-date +npm install --save react-native-date@https://github.com/juggleru/react-native-date.git --save ``` #### Step 2 - Update Gradle Settings @@ -36,31 +36,17 @@ dependencies { // file: android/app/source/main/java/com/{projectName}.MainActivity.java ... import me.nucleartux.date.ReactDatePackage; // import -import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity implements DefaultHardwareBackBtnHandler { // ! extends from FragmentActivity - - private ReactInstanceManager mReactInstanceManager; - private ReactRootView mReactRootView; - +... @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mReactRootView = new ReactRootView(this); - mReactInstanceManager = ReactInstanceManager.builder() - .setApplication(getApplication()) - .setBundleAssetName("index.android.bundle") - .setJSMainModuleName("index.android") - .addPackage(new MainReactPackage()) - .addPackage(new ReactDatePackage(this)) // register react date package here - .setUseDeveloperSupport(BuildConfig.DEBUG) - .setInitialLifecycleState(LifecycleState.RESUMED) - .build(); - mReactRootView.startReactApplication(mReactInstanceManager, "AwesomeProject", null); - setContentView(mReactRootView); + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new ReactDatePackage() // register react date package here + ); } -... - +} ``` #### Step 5 - Require and use in Javascript diff --git a/build.gradle b/build.gradle index 9cb439f..37462c0 100644 --- a/build.gradle +++ b/build.gradle @@ -30,5 +30,5 @@ repositories { } dependencies { - compile 'com.facebook.react:react-native:0.11.+' -} \ No newline at end of file + compile 'com.facebook.react:react-native:0.19.+' +} diff --git a/src/main/java/me/nucleartux/date/DateFormatHelper.java b/src/main/java/me/nucleartux/date/DateFormatHelper.java index c7fe209..fe4f0a0 100644 --- a/src/main/java/me/nucleartux/date/DateFormatHelper.java +++ b/src/main/java/me/nucleartux/date/DateFormatHelper.java @@ -24,4 +24,22 @@ public static Calendar parseDate(String date) { return initialDate; } + + public static Calendar parseDateInMilliseconds(long ms) { + Calendar initialDate = Calendar.getInstance(); + + if (ms > 0) + { + try + { + initialDate.setTimeInMillis(ms); + } + catch (Exception e) + { + return Calendar.getInstance(); + } + } + + return initialDate; + } } diff --git a/src/main/java/me/nucleartux/date/DateModule.java b/src/main/java/me/nucleartux/date/DateModule.java index 96c507c..e020266 100644 --- a/src/main/java/me/nucleartux/date/DateModule.java +++ b/src/main/java/me/nucleartux/date/DateModule.java @@ -1,7 +1,7 @@ package me.nucleartux.date; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.FragmentActivity; +import android.app.Activity; +import android.app.DialogFragment; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactApplicationContext; @@ -9,11 +9,9 @@ import com.facebook.react.bridge.ReactMethod; public class DateModule extends ReactContextBaseJavaModule { - private FragmentActivity mActivity = null; - public DateModule(ReactApplicationContext reactContext, FragmentActivity activity) { + public DateModule(ReactApplicationContext reactContext) { super(reactContext); - mActivity = activity; } @Override @@ -31,7 +29,21 @@ public void showDatepickerWithInitialDate(String initialDateString, Callback err Callback successCallback) { DialogFragment dateDialog = new DatePicker(DateFormatHelper.parseDate(initialDateString), errorCallback, successCallback); - dateDialog.show(mActivity.getSupportFragmentManager(), "datePicker"); + Activity activity = getCurrentActivity(); + if (activity != null) { + dateDialog.show(activity.getFragmentManager(), "datePicker"); + } + } + + @ReactMethod + public void showDatepickerWithInitialDateInMilliseconds(String initialDateString, Callback errorCallback, + Callback successCallback) { + DialogFragment dateDialog = new DatePicker(DateFormatHelper.parseDateInMilliseconds(Long.parseLong(initialDateString)), + errorCallback, successCallback); + Activity activity = getCurrentActivity(); + if (activity != null) { + dateDialog.show(activity.getFragmentManager(), "datePicker"); + } } @ReactMethod @@ -42,7 +54,10 @@ public void showDatepickerWithInitialMinMaxDate(String initialDateString, DateFormatHelper.parseDate(minDateString), DateFormatHelper.parseDate(maxDateString), errorCallback, successCallback); - dateDialog.show(mActivity.getSupportFragmentManager(), "datePicker"); + Activity activity = getCurrentActivity(); + if (activity != null) { + dateDialog.show(activity.getFragmentManager(), "datePicker"); + } } @ReactMethod @@ -55,6 +70,9 @@ public void showTimepickerWithInitialTime(String initialDateString, Callback err Callback successCallback) { DialogFragment dateDialog = new TimePicker(DateFormatHelper.parseDate(initialDateString), errorCallback, successCallback); - dateDialog.show(mActivity.getSupportFragmentManager(), "timePicker"); + Activity activity = getCurrentActivity(); + if (activity != null) { + dateDialog.show(activity.getFragmentManager(), "timePicker"); + } } } diff --git a/src/main/java/me/nucleartux/date/DatePicker.java b/src/main/java/me/nucleartux/date/DatePicker.java index 651275b..99e7f0d 100644 --- a/src/main/java/me/nucleartux/date/DatePicker.java +++ b/src/main/java/me/nucleartux/date/DatePicker.java @@ -3,7 +3,7 @@ import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; -import android.support.v4.app.DialogFragment; +import android.app.DialogFragment; import com.facebook.react.bridge.Callback; diff --git a/src/main/java/me/nucleartux/date/ReactDatePackage.java b/src/main/java/me/nucleartux/date/ReactDatePackage.java index 42101c8..4104f79 100644 --- a/src/main/java/me/nucleartux/date/ReactDatePackage.java +++ b/src/main/java/me/nucleartux/date/ReactDatePackage.java @@ -1,6 +1,6 @@ package me.nucleartux.date; -import android.support.v4.app.FragmentActivity; +import android.app.Activity; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.JavaScriptModule; @@ -13,17 +13,12 @@ import java.util.List; public class ReactDatePackage implements ReactPackage { - private FragmentActivity mActivity = null; - - public ReactDatePackage(FragmentActivity activity){ - mActivity = activity; - } @Override public List createNativeModules( ReactApplicationContext reactContext) { List modules = new ArrayList<>(); - modules.add(new DateModule(reactContext, mActivity)); + modules.add(new DateModule(reactContext)); return modules; } @@ -36,4 +31,4 @@ public List> createJSModules() { public List createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } -} \ No newline at end of file +} diff --git a/src/main/java/me/nucleartux/date/TimePicker.java b/src/main/java/me/nucleartux/date/TimePicker.java index 267f6ee..2cb425c 100644 --- a/src/main/java/me/nucleartux/date/TimePicker.java +++ b/src/main/java/me/nucleartux/date/TimePicker.java @@ -3,7 +3,7 @@ import android.app.Dialog; import android.app.TimePickerDialog; import android.os.Bundle; -import android.support.v4.app.DialogFragment; +import android.app.DialogFragment; import android.text.format.DateFormat; import com.facebook.react.bridge.Callback;