java - Plain While Screen while running application -


i'm making dialer application , i'm following guide simple dialer application difference i'm using fragments(with support libraries) rather activity approach. when try run app compiles fine displays plain white screen. fragments not implemented correctly or i'm somehow getting infinite loop? please appreciated in advance!

here's mainactivity.java:

package com.heroicjokester.android.haid;  import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.os.bundle; import android.support.v4.app.fragmentactivity;   public class dialeractivity extends fragmentactivity {  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_dialer);      fragmentmanager fm = getsupportfragmentmanager();     fragment fragment = new dialerfragment();          if(fragment == null){             fragment = new dialerfragment();             fm.begintransaction()                     .add(r.id.fragment_container,fragment)                     .commit();         } } } 

my activity_dialer.xml:

<framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="wrap_content" >  </framelayout> 

fragment_dialer.xml:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"           android:orientation="vertical"           android:layout_width="match_parent"           android:layout_height="match_parent">  <textview     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="@string/app_name"     android:gravity="center"     android:textappearance="?android:attr/textappearancelarge"/>  <edittext     android:id="@+id/input_pno"     android:inputtype="number"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:hint="@string/input_pno_hint"     />  <button     android:id="@+id/dial_button"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="@string/dial_button"     android:layout_gravity="center_horizontal"/>    </linearlayout> 

dialerfragment.java:

 package com.heroicjokester.android.haid;   import android.manifest;  import android.content.intent;  import android.content.pm.packagemanager;  import android.net.uri;  import android.os.bundle;  import android.support.v4.app.fragment;  import android.util.log;  import android.view.layoutinflater;  import android.view.view;  import android.view.viewgroup;  import android.widget.button;  import android.widget.edittext;  import android.widget.toast;;  import android.support.v4.content.contextcompat;  /**   * created ripcord on 01-apr-16.   */  public class dialerfragment extends fragment {  private edittext mphonefield;  private button mdialbutton;  //requesting permissions using runtime permissions. final private int request_code_ask_permissions=0;  private void initiatecall(){     int hascallpermission =          contextcompat.checkselfpermission(getactivity(),manifest.permission.read_phone_state);     if (hascallpermission != packagemanager.permission_granted){         requestpermissions(new string[]{manifest.permission.read_phone_state},                 request_code_ask_permissions);         return;     }     initiatecall(); }  @override public void onrequestpermissionsresult(int requestcode, string[] permissions, int[] grantresults ){    switch (requestcode){        case request_code_ask_permissions:            if (grantresults[0]==packagemanager.permission_granted){                //yay! permission granted                initiatecall();            }else{                //gd! permission denied                toast.maketext(getactivity(), r.string.permission_denied, toast.length_short).show();            }             break;        default:            super.onrequestpermissionsresult(requestcode, permissions, grantresults);     } }    @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);  }  @override public view oncreateview(layoutinflater inflater,viewgroup container,bundle savedinstancestate){     view v=inflater.inflate(r.layout.fragment_dialer,container,false);      mphonefield=(edittext) v.findviewbyid(r.id.input_pno);     mdialbutton=(button) v.findviewbyid(r.id.dial_button);      mdialbutton.setonclicklistener(new view.onclicklistener(){         public void onclick(view v){             try{                 if (mphonefield != null && (mphonefield.gettext().length()==10||mphonefield.gettext().length()==11)){                     startactivity(new intent(intent.action_call, uri.parse("tel:" + mphonefield.gettext())));                 }                 else if(mphonefield != null && mphonefield.gettext().length()==0){                     toast.maketext(getactivity(),r.string.no_number_toast,toast.length_short).show();                 }                 else if(mphonefield !=null && mphonefield.gettext().length()<10){                     toast.maketext(getactivity(),r.string.wrong_number_toast,toast.length_short).show();                 }             } catch (exception e){                 log.e("dialerappactivity","error: " + e.getmessage(),e);//runtime error logged             }         }     });       return v; }  } 

finally log file:

 04-01 16:55:56.067 2372-2372/? i/art: not late-enabling -xcheck:jni (already on)  04-01 16:55:56.143 2372-2372/com.heroicjokester.android.haid w/system: classloader referenced unknown path: /data/app/com.heroicjokester.android.haid-1/lib/x86  04-01 16:55:56.173 2372-2385/com.heroicjokester.android.haid d/openglrenderer: use egl_swap_behavior_preserved: true  04-01 16:55:56.279 2372-2385/com.heroicjokester.android.haid i/openglrenderer: initialized egl, version 1.4  04-01 16:55:56.564 2372-2385/com.heroicjokester.android.haid w/egl_emulation: eglsurfaceattrib not implemented  04-01 16:55:56.564 2372-2385/com.heroicjokester.android.haid w/openglrenderer: failed set egl_swap_behavior on surface 0xabfebbe0, error=egl_success  04-01 16:55:57.263 2372-2372/com.heroicjokester.android.haid i/choreographer: skipped 33 frames!  application may doing work on main thread.  04-01 17:01:31.638 2372-2378/com.heroicjokester.android.haid w/art: suspending threads took: 9.827ms  04-01 17:06:24.378 2372-2378/com.heroicjokester.android.haid w/art: suspending threads took: 15.026ms 

if(fragment == null) never returns true, therefore fragment transaction never getting called. assume trying make sure fragment doesn't replaced upon orientation change, in case should try find fragment first, , if not found, create new one:

private static final string fragment_tag_dialer = "fragment:dialer";  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_dialer);      fragmentmanager fm = getsupportfragmentmanager();     fragment fragment = (dialerfragment) fm.findfragmentbytag(fragment_tag_dialer);      if(fragment == null){         fragment = new dialerfragment();         fm.begintransaction()                 .add(r.id.fragment_container, fragment, fragment_tag_dialer)                 .commit();     } } 

Comments

Popular posts from this blog

java - Static nested class instance -

c# - Bluetooth LE CanUpdate Characteristic property -

JavaScript - Replace variable from string in all occurrences -