0

Я ученик и застрял в точке. Я попытался найти соответствующий ответ, но не нашел полезного ответа. Я пытаюсь сделать деятельность, у которой есть РАМКА. теперь сначала я пытаюсь отобразить изображение в течение 2 секунд, тогда он должен исчезнуть и должен показать некоторое представление, такое как TextView или Button. если я не использую findViewById, он отображает все в порядке. но в тот момент я использую findViewById ... приложение силы закрывается после вывода изображенияОшибка при использовании findViewById во фрагменте

MainActivity.java

package rihan.fragmenttryallviews; 

    import android.app.Activity; 
    import android.app.FragmentTransaction; 
    import android.os.Bundle; 
    import android.os.Handler; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 

     private static final int DELAY = 2000; 



     SplashFragment splashfragment = new SplashFragment(); 
     FragmentTransaction ft; 


     Handler hndlr = new Handler(); 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      ft = getFragmentManager().beginTransaction(); 
      ft.add(R.id.mainframe, splashfragment, "SPLASH_FRAGMENT"); 
      ft.commit(); 

      hndlr.postDelayed(new Runnable() { 

       private Activity view; 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 
        FragmentTransaction ft1; 
        ft1 = getFragmentManager().beginTransaction(); 
        ft1.remove(splashfragment).commit(); 

        AfterSplash aftersplash = new AfterSplash(); 

        FragmentTransaction after_splash; 
        after_splash = getFragmentManager().beginTransaction(); 
        after_splash.add(R.id.mainframe, aftersplash, "AFTER_SPLASH"); 
        after_splash.commit(); 

        //TextView text = (TextView) findViewById(R.id.txt1); 
        //text.setText("test"); 
       } 
      }, DELAY); 
     } 
    } 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/linear1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <FrameLayout 
      android:id="@+id/mainframe" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
     </FrameLayout> 

    </LinearLayout> 

SplashFragment.java

package rihan.fragmenttryallviews; 

    import android.app.Fragment; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 

    public class SplashFragment extends Fragment { 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      View splash_view=inflater.inflate(R.layout.fragment_splash, container, false); 
      return splash_view; 
     } 

    } 

fragment_splash.xml

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <ImageView 
      android:id="@+id/image_splash" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/ic_launcher" /> 

    </LinearLayout> 

AfterSplash.java

package rihan.fragmenttryallviews; 

    import android.app.Fragment; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 

    public class AfterSplash extends Fragment { 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      View v1=inflater.inflate(R.layout.splash_after, container,false); 
      return v1; 
     } 

    } 

splash_after.xml

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:id="@+id/txt1" 
     android:layout_height="match_parent" 
     android:text="Hello" 
     /> 

LogCat

09-08 22:42:22.346: D/asset(20377): AssetManager-->addDefaultAssets CIP path not exsit! 
09-08 22:42:22.349: D/Proxy(20377): setHttpRequestCheckHandler 
09-08 22:42:22.350: D/ActivityThread(20377): BIND_APPLICATION handled : 0/AppBindData{appInfo=ApplicationInfo{4259ed98 rihan.fragmenttryallviews}} 
09-08 22:42:22.537: D/dalvikvm(20377): JIT code cache reset in 0 ms (0 bytes 3/0) 
09-08 22:42:22.544: D/dalvikvm(20377): GC_FOR_ALLOC freed 2644K (26005), 18% free 12615K/15312K, paused 47ms, total 47ms 
09-08 22:42:22.590: D/ActivityThread(20377): ACT-AM_ON_RESUME_CALLED ActivityRecord{425a0448 [email protected] {rihan.fragmenttryallviews/rihan.fragmenttryallviews.MainActivity}} 
09-08 22:42:22.590: V/PhoneWindow(20377): DecorView setVisiblity: visibility = 4 ,Parent =null, this =com.android.internal.policy.impl.PhoneWindow$DecorView{427df1b0 I.ED.... R.....ID 0,0-0,0} 
09-08 22:42:22.600: V/PhoneWindow(20377): DecorView setVisiblity: visibility = 0 ,Parent =ViewRoot{426a8378 rihan.fragmenttryallviews/rihan.fragmenttryallviews.MainActivity,ident = 0}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{427df1b0 V.ED.... R.....ID 0,0-0,0} 
09-08 22:42:22.601: D/ActivityThread(20377): ACT-LAUNCH_ACTIVITY handled : 0/ActivityRecord{425a0448 [email protected] {rihan.fragmenttryallviews/rihan.fragmenttryallviews.MainActivity}} 
09-08 22:42:22.648: D/GraphicBuffer(20377): create handle(0x605d4a70) (w:480, h:800, f:1) 
09-08 22:42:22.649: I/MaliEGL(20377): [Mali]window_type=1, is_framebuffer=0, errnum = 0 
09-08 22:42:22.649: I/MaliEGL(20377): [Mali]surface->num_buffers=4, surface->num_frames=3, win_min_undequeued=1 
09-08 22:42:22.650: I/MaliEGL(20377): [Mali]max_allowed_dequeued_buffers=3 
09-08 22:42:22.651: D/GraphicBuffer(20377): close handle(0x605d4a70) (w:480 h:800 f:1) 
09-08 22:42:22.653: D/GraphicBuffer(20377): create handle(0x605d5860) (w:480, h:800, f:1) 
09-08 22:42:22.655: D/OpenGLRenderer(20377): Enabling debug mode 0 
09-08 22:42:22.656: D/GraphicBuffer(20377): create handle(0x60cb30e0) (w:1408, h:768, f:1) 
09-08 22:42:22.663: D/OpenGLRenderer(20377): setViewport 480x800 <0x605d5de8> 
09-08 22:42:22.667: V/InputMethodManager(20377): onWindowFocus: null softInputMode=288 first=true flags=#1810100 
09-08 22:42:22.667: V/InputMethodManager(20377): START INPUT: com.android.internal.policy.impl.PhoneWindow$DecorView{427df1b0 V.ED.... R.....ID 0,0-480,800} ic=null [email protected] controlFlags=#104 
09-08 22:42:22.789: D/dalvikvm(20377): JIT code cache reset in 0 ms (0 bytes 4/0) 
09-08 22:42:22.791: D/dalvikvm(20377): GC_FOR_ALLOC freed 650K (8667), 18% free 12654K/15428K, paused 35ms, total 35ms 
09-08 22:42:22.793: I/dalvikvm-heap(20377): Grow heap (frag case) to 13.873MB for 1536016-byte allocation 
09-08 22:42:22.826: D/dalvikvm(20377): GC_FOR_ALLOC freed 2K (65), 17% free 14152K/16932K, paused 32ms, total 32ms 
09-08 22:42:22.860: D/OpenGLRenderer(20377): prepareDirty (0.00, 0.00, 480.00, 800.00) opaque 1 <0x605d5de8> 
09-08 22:42:22.868: D/OpenGLRenderer(20377): finish <0x605d5de8> 
09-08 22:42:22.886: D/GraphicBuffer(20377): create handle(0x6127e1b0) (w:480, h:800, f:1) 
09-08 22:42:22.903: D/OpenGLRenderer(20377): prepareDirty (0.00, 0.00, 480.00, 800.00) opaque 1 <0x605d5de8> 
09-08 22:42:22.904: D/OpenGLRenderer(20377): finish <0x605d5de8> 
09-08 22:42:22.911: D/GraphicBuffer(20377): create handle(0x605bb4b8) (w:480, h:800, f:1) 
09-08 22:42:22.913: D/OpenGLRenderer(20377): prepareDirty (0.00, 0.00, 480.00, 800.00) opaque 1 <0x605d5de8> 
09-08 22:42:22.914: D/OpenGLRenderer(20377): finish <0x605d5de8> 
09-08 22:42:23.069: D/GraphicBuffer(20377): create handle(0x6127fcb8) (w:480, h:800, f:1) 
09-08 22:42:23.091: D/OpenGLRenderer(20377): prepareDirty (0.00, 0.00, 480.00, 800.00) opaque 1 <0x605d5de8> 
09-08 22:42:23.092: D/OpenGLRenderer(20377): finish <0x605d5de8> 
09-08 22:42:24.431: D/AndroidRuntime(20377): Shutting down VM 
09-08 22:42:24.431: W/dalvikvm(20377): threadid=1: thread exiting with uncaught exception (group=0x419b3c98) 
09-08 22:42:24.431: W/dalvikvm(20377): threadid=1: uncaught exception occurred 
09-08 22:42:24.432: W/System.err(20377): java.lang.NullPointerException 
09-08 22:42:24.436: W/System.err(20377): at rihan.fragmenttryallviews.MainActivity$1.run(MainActivity.java:49) 
09-08 22:42:24.436: W/System.err(20377): at android.os.Handler.handleCallback(Handler.java:808) 
09-08 22:42:24.437: W/System.err(20377): at android.os.Handler.dispatchMessage(Handler.java:103) 
09-08 22:42:24.437: W/System.err(20377): at android.os.Looper.loop(Looper.java:193) 
09-08 22:42:24.437: W/System.err(20377): at android.app.ActivityThread.main(ActivityThread.java:5292) 
09-08 22:42:24.437: W/System.err(20377): at java.lang.reflect.Method.invokeNative(Native Method) 
09-08 22:42:24.438: W/System.err(20377): at java.lang.reflect.Method.invoke(Method.java:515) 
09-08 22:42:24.438: W/System.err(20377): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
09-08 22:42:24.438: W/System.err(20377): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
09-08 22:42:24.438: W/System.err(20377): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
09-08 22:42:24.438: W/System.err(20377): at dalvik.system.NativeStart.main(Native Method) 
09-08 22:42:24.438: W/dalvikvm(20377): threadid=1: calling UncaughtExceptionHandler 
09-08 22:42:24.440: E/AndroidRuntime(20377): FATAL EXCEPTION: main 
09-08 22:42:24.440: E/AndroidRuntime(20377): Process: rihan.fragmenttryallviews, PID: 20377 
09-08 22:42:24.440: E/AndroidRuntime(20377): java.lang.NullPointerException 
09-08 22:42:24.440: E/AndroidRuntime(20377): at rihan.fragmenttryallviews.MainActivity$1.run(MainActivity.java:49) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at android.os.Handler.handleCallback(Handler.java:808) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at android.os.Handler.dispatchMessage(Handler.java:103) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at android.os.Looper.loop(Looper.java:193) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at android.app.ActivityThread.main(ActivityThread.java:5292) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at java.lang.reflect.Method.invokeNative(Native Method) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at java.lang.reflect.Method.invoke(Method.java:515) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
09-08 22:42:24.440: E/AndroidRuntime(20377): at dalvik.system.NativeStart.main(Native Method) 
+0

пожалуйста, напишите ваш LogCat –

+0

я получил тот же вопрос с Samsung Galaxy S5 (собственное приложение для Android, а не гибридное приложение). Каково решение этой проблемы? Пожалуйста, помогите мне как можно скорее. – Naveen

+0

Опубликуйте свой логарифт –

ответ

1

Переход фрагмент не происходит сразу, и именно поэтому вы findViewById является терпит неудачу. Если вы хотите, чтобы заставить его произойти немедленно, после commit вызова, выполните следующие действия:

getFragmentManager().executePendingTransactions(); 
+0

благодаря его работе. просто для моей информации, есть ли какой-либо другой способ и gtng моя работа? –

+0

Вы также можете выполнить обновление TextView внутри другой задерживаемой версии. – Buddy

+0

Можете ли вы предоставить мне пример PLZ –

0

Попробуйте это может быть произведениями

FragSqliteExample fragSqliteExample=new FragSqliteExample(); 
     FragmentTransaction ft=root.getSupportFragmentManager().beginTransaction(); 
     ft.addToBackStack(FragSqliteExample.class.getName()); 
     ft.add(R.id.frgContainer,fragSqliteExample,FragMain.class.getName()); 
     ft.commit();