Coder Social home page Coder Social logo

vijayrawatsan / android-json-form-wizard Goto Github PK

View Code? Open in Web Editor NEW
357.0 19.0 98.0 740 KB

Android Material Json Form Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular format.

License: MIT License

Java 100.00%

android-json-form-wizard's Introduction

Android Arsenal

Android Json Wizard

Android Json Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular format.

Demo

alt demo

Demo Youtube Link

Usage

Json Structure

Form json should consist of steps and fields.

Steps

Step directly corresponds to a fragment(or a page) in wizard. It consists of different fields(array of fields), title and next step.

    {
     "step1":{
             "fields":[
                 {
                     "key":"name",
                     "type":"edit_text",
                     "hint":"Enter Your Name"
                 },
                 {
                     "key":"email",
                     "type":"edit_text",
                     "hint":"Enter email address"
                 },
                 {
                     "key":"labelBackgroundImage",
                     "type":"label",
                     "text":"Choose Background Image"
                 },
                 {
                     "key":"chooseImage",
                     "type":"choose_image",
                     "uploadButtonText":"Choose"
                 }
             ],
             "title":"Step 1",
             "next":"step2"
         }
    }

Supported fields

EditText

    {
        "key":"name",
        "type":"edit_text",
        "hint":"Enter Your Name"
    }

key - must be unique in that particular step.

type - must be edit_text for EditText.

hint - hint for EditText.

value - will be the value present in the editText after completion of wizard

EditText Required Validation
"v_required" : {
                    "value" : "true",
                    "err" : "Please enter some value this is a required field."
               }
EditText Min length Validation
"v_min_length" : {
                    "value" : "3",
                    "err" : "Min length should be at least 3"
                }
EditText Max Length Validation
"v_max_length" : {
                    "value" : "30",
                    "err" : "Max length is 30"
                }
EditText Email Validation
"v_email" : {
                    "value" : "true",
                    "err" : "Not an email."
                }
EditText Regex Validation
"v_email" : {
                    "value" : "your-regex-here",
                    "err" : "Your message here."
                }

Label

    {
     "key":"labelHeaderImage",
     "type":"label",
     "text":"Choose Background Image"
    }

key - must be unique in that particular step.

type - must be label for Label.

text - text for Label.

ImagePicker

    {
     "key":"chooseImage",
     "type":"choose_image",
     "uploadButtonText":"Choose"
    }

key - must be unique in that particular step.

type - must be choose_image for ImagePicker.

uploadButtonText - text for Button of ImagePicker.

value - will be the path of chosen image on external storage

ImagePicker Required Validation
"v_required" : {
                    "value" : "true",
                    "err" : "Please enter some value this is a required field."
               }

CheckBox (can be used for single/multiple CheckBoxes)

    {
        "key":"checkData",
        "type":"check_box",
        "label":"Select multiple preferences",
        "options":[
            {
                "key":"awesomeness",
                "text":"Are you willing for some awesomeness?",
                "value":"false"
            },
            {
                "key":"newsletter",
                "text":"Do you really want to opt out from my newsletter?",
                "value":"false"
            }
        ]
    }

key - must be unique in that particular step.

type - must be check_box for CheckBox.

label - text for header of CheckBox.

options - options for CheckBox.

key(in options) - must be unique in options.

text(in options) - text fot the CheckBox.

value(in options) - true/false.

CheckBox Required Validation

Not supported yet.

Spinner

        {
            "key":"name",
            "type":"spinner",
            "hint":"Name Thy House"
            "values":["Stark", "Targeriyan", "Lannister"]
        }

key - must be unique in that particular step.

type - must be spinner

hint - hint for Spinner.

values - Array of Strings.

value - will be the value present in the spinner after completion of wizard

Spinner Required Validation
"v_required" : {
                    "value" : "true",
                    "err" : "Please enter some value this is a required field."
               }

RadioButton (can be used for single/multiple RadioButtons)

{
    "key":"radioData",
    "type":"radio",
    "label":"Select one item from below",
    "options":[
        {
            "key":"areYouPro",
            "text":"Are you pro?"
        },
        {
            "key":"areYouAmature",
            "text":"Are you amature?"
        },
        {
            "key":"areYouNovice",
            "text":"Are you novice?"
        }
    ],
    "value":"areYouNovice"
}

key - must be unique in that particular step.

type - must be radio for RadioButton.

label - text for header of RadioButton.

value - must be key of one of the options which is selected/ or empty if no option is selected.

options - options for RadioButton.

key(in options) - must be unique in options.

text(in options) - text fot the RadioButton.

RadioButton Required Validation

Not supported yet.

Demo Input Json (Complete)

{
    "count":"3",
    "step1":{
        "fields":[
            {
                "key":"name",
                "type":"edit_text",
                "hint":"Enter Your Name",
                "v_min_length":{  "value" : "3",
                                    "err" : "Min length should be at least 3"
                                },
                "v_max_length":{  "value" : "10",
                    "err" : "Max length can be at most 10."
                }
            },
            {
                "key":"email",
                "type":"edit_text",
                "hint":"Enter Your Email",
                "v_email":{  "value" : "true",
                    "err" : "Not an email."
                }
            },
            {
                "key":"labelBackgroundImage",
                "type":"label",
                "text":"Choose Background Image"
            },
            {
                "key":"chooseImage",
                "type":"choose_image",
                "uploadButtonText":"Choose",
                "v_required":{  "value" : "true",
                    "err" : "Please choose an image to proceed."
                }
            },
            {
                "key":"house",
                "type":"spinner",
                "hint": "Name Thy House",
                "values":["Stark", "Targeriyan", "Lannister"],
                "v_required":{  "value" : "true",
                    "err" : "Please choose a value to proceed."
                }
            }
        ],
        "title":"Step 1 of 3",
        "next":"step2"
    },
    "step2":{
        "fields":[
            {
                "key":"name",
                "type":"edit_text",
                "hint":"Enter Country"
            },
            {
                "key":"checkData",
                "type":"check_box",
                "label":"Select multiple preferences",
                "options":[
                    {
                        "key":"awesomeness",
                        "text":"Are you willing for some awesomeness?",
                        "value":"false"
                    },
                    {
                        "key":"newsletter",
                        "text":"Do you really want to opt out from my newsletter?",
                        "value":"false"
                    }
                ]
            },
            {
                "key":"radioData",
                "type":"radio",
                "label":"Select one item from below",
                "options":[
                    {
                        "key":"areYouPro",
                        "text":"Are you pro?"
                    },
                    {
                        "key":"areYouAmature",
                        "text":"Are you amature?"
                    },
                    {
                        "key":"areYouNovice",
                        "text":"Are you novice?"
                    }
                ],
                "value":"areYouNovice"
            }
        ],
        "title":"Step 2 of 3",
        "next":"step3"
    },
    "step3":{
        "fields":[
            {
                "key":"anything",
                "type":"edit_text",
                "hint":"Enter Anything You Want"
            }
        ],
        "title":"Step 3 of 3"
    }
}

Starting form activity with your json

    Intent intent = new Intent(context, JsonFormActivity.class);
    String json = "Your complete JSON";
    intent.putExtra("json", json);
    startActivityForResult(intent, REQUEST_CODE_GET_JSON);

And receive result populated json in onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_GET_JSON && resultCode == RESULT_OK) {
        Log.d(TAG, data.getStringExtra("json"));
    }
    super.onActivityResult(requestCode, resultCode, data);
}

Output Json (of demo input json)

{
    "count":"3",
    "step1":{
        "fields":[
            {
                "key":"name",
                "type":"edit_text",
                "hint":"Enter Your Name",
                "value":"Vijay"
            },
            {
                "key":"email",
                "type":"edit_text",
                "hint":"Enter Your Email",
                "value":"[email protected]"
            },
            {
                "key":"labelBackgroundImage",
                "type":"label",
                "text":"Choose Background Image"
            },
            {
                "key":"chooseImage",
                "type":"choose_image",
                "uploadButtonText":"Choose",
                "value":"\/storage\/emulated\/0\/Pictures\/Wally\/10017.png"
            }
        ],
        "title":"Step 1 of 3",
        "next":"step2"
    },
    "step2":{
        "fields":[
            {
                "key":"name",
                "type":"edit_text",
                "hint":"Enter Country",
                "value":"India"
            },
            {
                "key":"checkData",
                "type":"check_box",
                "label":"Select multiple preferences",
                "options":[
                    {
                        "key":"awesomeness",
                        "text":"Are you willing for some awesomeness?",
                        "value":"true"
                    },
                    {
                        "key":"newsletter",
                        "text":"Do you really want to opt out from my newsletter?",
                        "value":"false"
                    }
                ]
            },
            {
                "key":"radioData",
                "type":"radio",
                "label":"Select one item from below",
                "options":[
                    {
                        "key":"areYouPro",
                        "text":"Are you pro?"
                    },
                    {
                        "key":"areYouAmature",
                        "text":"Are you amature?"
                    },
                    {
                        "key":"areYouNovice",
                        "text":"Are you novice?"
                    }
                ],
                "value":"areYouPro"
            }
        ],
        "title":"Step 2 of 3",
        "next":"step3"
    },
    "step3":{
        "fields":[
            {
                "key":"anything",
                "type":"edit_text",
                "hint":"Enter Anything You Want",
                "value":"anything"
            }
        ],
        "title":"Step 3 of 3"
    }
}

Including in your project

gradle:

Step 1. Add the JitPack repository to your build file

repositories {
    maven {
        url "https://jitpack.io"
    }
}

Step 2. Add the dependency in the form

dependencies {
    compile 'com.github.vijayrawatsan:android-json-form-wizard:1.0'
}

maven:

Step 1. Add the JitPack repository to your build file

<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

Step 2. Add the dependency in the form

<dependency>
    <groupId>com.github.vijayrawatsan</groupId>
    <artifactId>android-json-form-wizard</artifactId>
    <version>1.0</version>
</dependency>

TODOs

  • Support validation for Checkbox and RadioButton.
  • Improve image picker UI.

Contributing

Contributions welcome via Github pull requests.

Credits

Thanks!

License

This project is licensed under the MIT License. Please refer the License.txt file.

android-json-form-wizard's People

Contributors

arpitanand avatar nipuns avatar victormatrix avatar vijayrawatsan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-json-form-wizard's Issues

Form Elements not showing

Hello Team,

Tried using this fantastic library, but after using the test input JSON, majority of the form elements are not showing, the only form element that showed was the "choose" button to upload images.

Please what could cause this issue.

Looking forward to hearing from you guys.

Branching

Is branching is possible feature?

java.lang.ClassNotFoundException on EditText text change event.

E/AndroidRuntime: FATAL EXCEPTION: main
Process: konzeptfabrica.com.vehicloadmin, PID: 27961
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/internal/widget/TintContextWrapper;
at com.vijay.jsonwizard.customviews.GenericTextWatcher.afterTextChanged(GenericTextWatcher.java:35)
at android.widget.TextView.sendAfterTextChanged(TextView.java:7698)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:9486)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:972)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:516)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:454)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:33)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:685)
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:445)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:340)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5300)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.internal.widget.TintContextWrapper" on path: DexPathList[[zip file "/data/app/konzeptfabrica.com.vehicloadmin-2/base.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.vijay.jsonwizard.customviews.GenericTextWatcher.afterTextChanged(GenericTextWatcher.java:35) 
at android.widget.TextView.sendAfterTextChanged(TextView.java:7698) 
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:9486) 
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:972) 
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:516) 
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:454) 
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:33) 
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:685) 
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:445) 
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:340) 
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5300) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114) 
Suppressed: java.lang.ClassNotFoundException: android.support.v7.internal.widget.TintContextWrapper
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 20 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

all android error inflate

activity and fragment are blank. i'm running sample app

here logcat

03-10 16:31:17.822 21312-21312/com.paybay.quismartm E/Minikin: addFontFromAsset failed to create font font/Roboto-Regular.ttf 03-10 16:31:17.822 21312-21312/com.paybay.quismartm D/JsonFormInteractor: Exception occurred in making child view at index : 0 : Exception is : Binary XML file line #1: Binary XML file line #1: Error inflating class <unknown> 03-10 16:31:17.822 21312-21312/com.paybay.quismartm W/System.err: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class <unknown> 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.getViewsFromJson(JsonFormInteractor.java:142) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.fetchFormElements(JsonFormInteractor.java:56) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormElements(JsonFormFragmentPresenter.java:49) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.fragments.JsonFormFragment.onViewCreated(JsonFormFragment.java:69) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.Activity.performStart(Activity.java:6268) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.-wrap11(ActivityThread.java) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.os.Looper.loop(Looper.java:148) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417) 03-10 16:31:17.823 21312-21312/com.paybay.quismartm W/System.err: at java.lang.reflect.Method.invoke(Native Method) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:645) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: ... 24 more 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: Caused by: java.lang.reflect.InvocationTargetException 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at java.lang.reflect.Constructor.newInstance(Native Method) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:619) 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: ... 27 more 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: Caused by: java.lang.RuntimeException: Font asset not found font/Roboto-Regular.ttf 03-10 16:31:17.824 21312-21312/com.paybay.quismartm W/System.err: at android.graphics.Typeface.createFromAsset(Typeface.java:190) 03-10 16:31:17.825 21312-21312/com.paybay.quismartm W/System.err: at com.rengwuxian.materialedittext.MaterialEditText.getCustomTypeface(MaterialEditText.java:478) 03-10 16:31:17.825 21312-21312/com.paybay.quismartm W/System.err: at com.rengwuxian.materialedittext.MaterialEditText.init(MaterialEditText.java:381) 03-10 16:31:17.825 21312-21312/com.paybay.quismartm W/System.err: at com.rengwuxian.materialedittext.MaterialEditText.<init>(MaterialEditText.java:316) 03-10 16:31:17.825 21312-21312/com.paybay.quismartm W/System.err: ... 29 more 03-10 16:31:17.826 21312-21312/com.paybay.quismartm E/Minikin: addFontFromAsset failed to create font font/Roboto-Regular.ttf 03-10 16:31:17.826 21312-21312/com.paybay.quismartm D/JsonFormInteractor: Exception occurred in making child view at index : 1 : Exception is : Binary XML file line #1: Binary XML file line #1: Error inflating class <unknown> 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class <unknown> 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.getViewsFromJson(JsonFormInteractor.java:142) 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.fetchFormElements(JsonFormInteractor.java:56) 03-10 16:31:17.826 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormElements(JsonFormFragmentPresenter.java:49) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.fragments.JsonFormFragment.onViewCreated(JsonFormFragment.java:69) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.Activity.performStart(Activity.java:6268) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.-wrap11(ActivityThread.java) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.os.Looper.loop(Looper.java:148) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at java.lang.reflect.Method.invoke(Native Method) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:645) 03-10 16:31:17.827 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: ... 24 more 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: Caused by: java.lang.reflect.InvocationTargetException 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at java.lang.reflect.Constructor.newInstance(Native Method) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:619) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: ... 27 more 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: Caused by: java.lang.RuntimeException: Font asset not found font/Roboto-Regular.ttf 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at android.graphics.Typeface.createFromAsset(Typeface.java:190) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at com.rengwuxian.materialedittext.MaterialEditText.getCustomTypeface(MaterialEditText.java:478) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at com.rengwuxian.materialedittext.MaterialEditText.init(MaterialEditText.java:381) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: at com.rengwuxian.materialedittext.MaterialEditText.<init>(MaterialEditText.java:316) 03-10 16:31:17.828 21312-21312/com.paybay.quismartm W/System.err: ... 29 more 03-10 16:31:17.829 21312-21312/com.paybay.quismartm E/Minikin: addFontFromAsset failed to create font font/Roboto-Bold.ttf 03-10 16:31:17.829 21312-21312/com.paybay.quismartm D/JsonFormInteractor: Exception occurred in making child view at index : 2 : Exception is : Font asset not found font/Roboto-Bold.ttf 03-10 16:31:17.829 21312-21312/com.paybay.quismartm W/System.err: java.lang.RuntimeException: Font asset not found font/Roboto-Bold.ttf 03-10 16:31:17.829 21312-21312/com.paybay.quismartm W/System.err: at android.graphics.Typeface.createFromAsset(Typeface.java:190) 03-10 16:31:17.829 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.getTextViewWith(JsonFormInteractor.java:202) 03-10 16:31:17.829 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.getViewsFromJson(JsonFormInteractor.java:81) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.interactors.JsonFormInteractor.fetchFormElements(JsonFormInteractor.java:56) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormElements(JsonFormFragmentPresenter.java:49) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at com.vijay.jsonwizard.fragments.JsonFormFragment.onViewCreated(JsonFormFragment.java:69) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.Activity.performStart(Activity.java:6268) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.-wrap11(ActivityThread.java) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.os.Looper.loop(Looper.java:148) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at java.lang.reflect.Method.invoke(Native Method) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 03-10 16:31:17.830 21312-21312/com.paybay.quismartm W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 03-10 16:31:17.996 21312-21326/com.paybay.quismartm D/OpenGLRenderer: endAllStagingAnimators on 0x7f63e73c00 (RippleDrawable) with handle 0x7f6740f740

How to solve ActionBarActivity Deprecated?

Hi, I tried to include this library into my new project, but app chashes when i call JsonFormActivity. Reason is
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/app/ActionBarActivity;

How can I solve?

Thanks

more functionality

Would it be possible to have 2 spinners of which the second one would activate depending on what was selected in the first one?
For example i would have a spinner with countries and as soon as i would select "UK" in there it would enable a second spinner underneath the first one where you could choose from a list of cities in the UK?

Thank you!

Keyboard error

When i try to type something i have app crash
In logs :

java.lang.ClassCastException: android.support.v7.internal.view.ContextThemeWrapper cannot be cast to com.vijay.jsonwizard.interfaces.JsonApi
            at com.vijay.jsonwizard.customviews.GenericTextWatcher.afterTextChanged(GenericTextWatcher.java:37)
            at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
            at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8891)
            at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:970)
            at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:497)
            at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
            at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
            at android.text.method.QwertyKeyListener.onKeyDown(QwertyKeyListener.java:222)
            at android.text.method.TextKeyListener.onKeyDown(TextKeyListener.java:136)
            at android.widget.TextView.doKeyDown(TextView.java:5385)
            at android.widget.TextView.onKeyDown(TextView.java:5204)
            at android.view.KeyEvent.dispatch(KeyEvent.java:2609)
            at android.view.View.dispatchKeyEvent(View.java:7205)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.widget.ScrollView.dispatchKeyEvent(ScrollView.java:353)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1359)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1920)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1395)
            at android.app.Activity.dispatchKeyEvent(Activity.java:2370)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:49)
            at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:258)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:49)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1847)
            at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3701)
            at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3651)
            at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2818)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)

Radiobutton & CheckBox

How to change text position in CompoundButton (Radiobutton & Checkbox). Now, I have a text on the left side and button on the right side. I would like to change it and have the text on the right side.

ClassCastException when trying to fill EditText

Hi,

When i try to fill an EditText, the application crashes with the error below . I'm using appcompat-v7:22.2.1

java.lang.ClassCastException: android.support.v7.internal.widget.TintContextWrapper cannot be cast to com.vijay.jsonwizard.interfaces.JsonApi
at com.vijay.jsonwizard.customviews.GenericTextWatcher.afterTextChanged(GenericTextWatcher.java:30)
at android.widget.TextView.sendAfterTextChanged(TextView.java:7722)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:9493)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:972)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:516)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:454)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:33)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:685)
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:445)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:340)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5321)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

Spinner issue

on back click, the spinner item selected is not retained. It again displays Enter the house name.

@ketki512

Landscape

Error on change from portrait to landscape

FATAL EXCEPTION: main
    Process: us.ethnicmedia.sevendays, PID: 4560
    java.lang.RuntimeException: Unable to start activity ComponentInfo{us.ethnicmedia.sevendays/com.vijay.jsonwizard.activities.JsonFormActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.vijay.jsonwizard.mvp.ViewState.setSavedInstance(boolean)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
            at android.app.ActivityThread.access$900(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.vijay.jsonwizard.mvp.ViewState.setSavedInstance(boolean)' on a null object reference
            at com.vijay.jsonwizard.mvp.BaseFragment.onCreate(BaseFragment.java:26)
            at com.vijay.jsonwizard.fragments.JsonFormFragment.onCreate(JsonFormFragment.java:58)
            at android.support.v4.app.Fragment.performCreate(Fragment.java:1766)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:917)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1120)
            at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1924)
            at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:268)
            at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:58)
            at com.vijay.jsonwizard.activities.JsonFormActivity.onCreate(JsonFormActivity.java:36)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
            at android.app.ActivityThread.access$900(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Json-Schema Compliant

Hi,

I don't know if this lib does it already, although I think it doesn't... is it JSON Schema [1] compatible?

It would be great because of the huge amount of javascript libs that allow you to show forms based on a JSON Schema format.

Great work by the way :)

Cheers!

[1] JSON Schema: http://json-schema.org/

Fatal Exception: java.lang.RuntimeException

I am getting following crashes from firebase log.
Unable to start activity
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.vijay.jsonwizard.mvp.ViewState.setSavedInstance(boolean)' on a null object reference

Spinner is not displaying

This is my form.json, but it does not display the spinner

{
"count":"1",
"step1":{
"fields":[
{
"key":"from_account",
"type":"spinner",
"hint": "Select source account",
"values":["0100719742003", "0200404805009"],
"v_required":{ "value" : "true",
"err" : "Please choose a value to proceed."
}
}
],
"title":"Step 1 of 1"
}
}

Crash on upload image and go back

Hello,

Thanks for uploading this useful code. One issue is coming in current version:

Issue: Crash on uploading image and going forward and coming back.

How to reproduce:
1: upload image in page 1
2: Go to page 2.
3. Write some text
4. Go back to page 1.
(Crash).

Can you please check.

Unable to Validate Spinner

Hi,

I tried validating (required field) the spinner in a similar ways as we did for editText and Mobile but it is not working. Can you please help me out with this?

web based form builder

I have built a web based form builder to automate the creation of the
json string for the wizard.

Uploading code after testing in 2days

Spinner invalid index 3, size is 3

I have three values(item1, item2,item3), when i select the item3 it show this error.
please, change your class "JsonFormFragmentPresenter", in the function "onItemSelect",
(position + 1) to (position)

Not loading complete json

Hi Vijay,

On compile the latest version, only load image part is getting loaded in form. Rest all the fields are getting loaded.

SDK on device: 18.

Tried both ways: compiling from URL and library.

Can you please help in this.

NoClassDefFoundError

I got an error in my sample project using this library that says:

FATAL EXCEPTION: main
Process: com.garudainfinity.leumartsurvey, PID: 30819
java.lang.NoClassDefFoundError: com.vijay.jsonwizard.activities.JsonFormActivity
at com.garudainfinity.leumartsurvey.activities.SurveyListActivity.onClick(SurveyListActivity.java:156)
at android.view.View.performClick(View.java:5214)
at android.view.View$PerformClick.run(View.java:20978)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6134)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

this is how i call the activity:
intent = new Intent(this, JsonFormActivity.class);
String json = "Your complete JSON";
intent.putExtra("json", json);
startActivityForResult(intent, 1);

am i doing this wrong?

RegEx Issue

Using the following in data.json
{
"key":"contact",
"type":"edit_text",
"hint":"Contact",
"v_reg" : {
"value" : "^[789]\d{9}$",
"err" : "Enter a valid contact number."
}
},
{
"key":"postal_code",
"type":"edit_text",
"hint":"Postal Code",
"v_email":{"value":"^\d{3}\s?\d{3}$",
"err":"Invalid Zip Code"
}
},
{
"key":"employee_id",
"type":"edit_text",
"hint":"Employee Number",
"v_email":{"value":"^[0-9]{4}$",
"err":"Enter a 4 digit Employee ID"
}
}

But the reg exp is not getting validated.
Can someone please help?

Problem RadioButton

When trying to Add a radio butto as an example

{
"key":"radioData",
"type":"radio",
"label":"Select one item from below",
"options":[
{
"key":"areYouPro",
"text":"Are you pro?"
},
{
"key":"areYouAmature",
"text":"Are you amature?"
},
{
"key":"areYouNovice",
"text":"Are you novice?"
}
],
"value":"areYouNovice"
}

presents the following problem

E/JsonFormInteractor: Exception occurred in making child view at index : 2 : Exception is : No value for orientation
org.json.JSONException: No value for orientation
at org.json.JSONObject.get(JSONObject.java:392)
at com.vijay.jsonwizard.widgets.RadioButtonFactory.getEditableViewsFromJson(RadioButtonFactory.java:59)
at com.vijay.jsonwizard.widgets.RadioButtonFactory.getViewsFromJson(RadioButtonFactory.java:48)
at com.vijay.jsonwizard.interactors.JsonFormInteractor.fetchFormElements(JsonFormInteractor.java:60)
at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.getStepFormElements(JsonFormFragmentPresenter.java:114)
at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormEditionElements(JsonFormFragmentPresenter.java:90)
at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormElements(JsonFormFragmentPresenter.java:75)
at com.vijay.jsonwizard.fragments.JsonFormFragment.onViewCreated(JsonFormFragment.java:88)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:892)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6923)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)

This Activity already has an action bar supplied by the window decor

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3150)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260)
at android.app.ActivityThread.access$1000(ActivityThread.java:218)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6934)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar(AppCompatDelegateImplV9.java:203)
at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130)
at com.vijay.jsonwizard.activities.JsonFormActivity.onCreate(JsonFormActivity.java:38)
at android.app.Activity.performCreate(Activity.java:6609)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3103)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260) 
at android.app.ActivityThread.access$1000(ActivityThread.java:218) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:6934) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

java.lang.NullPointerException: Null reference used for synchronization (monitor-enter)

FATAL EXCEPTION: main
Process: com.wokelchords.app.auctionhero, PID: 8207
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wokelchords.app.auctionhero/com.vijay.jsonwizard.activities.JsonFormActivity}: java.lang.NullPointerException: Null reference used for synchronization (monitor-enter)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Null reference used for synchronization (monitor-enter)
at com.vijay.jsonwizard.activities.JsonFormActivity.getStep(JsonFormActivity.java:54)
at com.vijay.jsonwizard.fragments.JsonFormFragment.getStep(JsonFormFragment.java:162)
at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormElements(JsonFormFragmentPresenter.java:43)
at com.vijay.jsonwizard.fragments.JsonFormFragment.onViewCreated(JsonFormFragment.java:69)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
at android.app.Activity.performStart(Activity.java:5949)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
at android.app.ActivityThread.access$800(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5221) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

I am running with
compileSdkVersion 23
buildToolsVersion "23.0.2"

Got an error when trying to implement the library.

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

Therefore i added this line in AndroidManifest.xml

<activity
    android:name="com.vijay.jsonwizard.activities.JsonFormActivity"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>

Dependable Question

Is it possible for the library to handle questions that depends on selected results of the previous question?
e.g
Are you sure you want to continue?
Yes
No
on selecting Yes user is asked to proceed and and on selecting no they are allowed to explain why

java.lang.NullPointerException

java.lang.RuntimeException: Unable to start activity ComponentInfo{www.simonpanel.co.il.simonpanel/com.vijay.jsonwizard.activities.JsonFormActivity}: java.lang.NullPointerException: Null pointer exception during instruction 'monitor-enter v2'
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2367)
            at android.app.ActivityThread.access$800(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5274)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
     Caused by: java.lang.NullPointerException: Null pointer exception during instruction 'monitor-enter v2'
            at com.vijay.jsonwizard.activities.JsonFormActivity.getStep(JsonFormActivity.java:54)
            at com.vijay.jsonwizard.fragments.JsonFormFragment.getStep(JsonFormFragment.java:162)
            at com.vijay.jsonwizard.presenters.JsonFormFragmentPresenter.addFormElements(JsonFormFragmentPresenter.java:43)
            at com.vijay.jsonwizard.fragments.JsonFormFragment.onViewCreated(JsonFormFragment.java:69)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
            at android.app.Activity.performStart(Activity.java:5993)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2367)
            at android.app.ActivityThread.access$800(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5274)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)

How to get form values

How do I get the values of the generated fields in the form?

Any ideas that might help?
Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.