2016-04-08 21 views
0

Bir parçada bir snackbar oluşturmaya çalışıyorum. Başka birçok benzer soruyu denedim ama bir çözüm bulamadım. Fragman açıldığında, uygulama çöküyor. Problemin ne olduğunu bilmiyorum. Birisi bana yardım edebilir. Şimdiden teşekkürler. Bu benim xml dosyasıdırSnackbar, parçasında çalışmıyor, diğer soruların çözümlerini denediniz

public class MainFragment extends Fragment { 


    public MainFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_main, null); 
     ImageView test = new ImageView(getContext()); 
     ImageView nyimg = (ImageView)view.findViewById(R.id.glidimg); 

     Glide.with(getContext()).load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg").into(nyimg); 

     Snackbar.make(view, "Some Message", Snackbar.LENGTH_INDEFINITE).show(); 

     // Picasso.with(getContext()).load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg").into(test); 
     return view; 
     //return inflater.inflate(R.layout.fragment_main, container, false); 
    } 
} 

: Bu benim parçasıdır

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context="com.example.imran.myapp.MainFragment" 
    > 

    <TextView 
     android:id="@+id/main_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="35sp" 
     android:textColor="@color/white" 
     android:textAlignment="center" 
     android:background="@drawable/title_background" 
     android:layout_gravity="center" 
     android:text="Welcome" /> 
    <LinearLayout android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_marginTop="40dp" 
      android:textSize="25sp" 
      android:textStyle="bold" 
      android:textAlignment="center" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="You are logged in." 
      /> 

     <ImageView 
      android:id="@+id/glidimg" 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" 
      android:contentDescription="my image" 
      android:src="@drawable/ic_menu_gallery" 
      /> 

    </LinearLayout> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="www.mirzaphotos.com" 
     android:layout_gravity="bottom" 
     android:textAlignment="center" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:textColor="@color/darkorange" 

     android:layout_alignParentBottom="true" 
     /> 

</RelativeLayout> 

bu hatayı alıyorum:

04-08 17:57:18.559 4049-4049/? E/AndroidRuntime: FATAL EXCEPTION: main 
               Process: com.example.imran.myapp, PID: 4049 
               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.imran.myapp/com.example.imran.myapp.Home}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2808) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2873) 
                at android.app.ActivityThread.access$900(ActivityThread.java:181) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1482) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:145) 
                at android.app.ActivityThread.main(ActivityThread.java:6145) 
                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) 
                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference 
                at android.support.design.widget.Snackbar.<init>(Snackbar.java:180) 
                at android.support.design.widget.Snackbar.make(Snackbar.java:206) 
                at com.example.imran.myapp.MainFragment.onCreateView(MainFragment.java:42) 
                at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1026) 
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207) 
                at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
                at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572) 
                at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 
                at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:511) 
                at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1234) 
                at android.app.Activity.performStart(Activity.java:6412) 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2771) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2873)  
                at android.app.ActivityThread.access$900(ActivityThread.java:181)  
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1482)  
                at android.os.Handler.dispatchMessage(Handler.java:102)  
                at android.os.Looper.loop(Looper.java:145)  
                at android.app.ActivityThread.main(ActivityThread.java:6145)  
                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)  
04-08 17:57:18.559 4068-4097/? D/AcmsCertificateMngr: handleAppRemoved() Enter com.example.imran.myapp 
04-08 17:57:18.569 1036-1514/? V/ApplicationPolicy: isApplicationStateBlocked userId 0 pkgname com.example.imran.myapp 
04-08 17:57:18.579 1036-1514/? W/ActivityManager: Force finishing activity com.example.imran.myapp/.Home 
+0

Bunun yerine ne 'view' arasında' Snackbar.make' için 'container' geçirirseniz? – totoro

+0

42 nolu hat hangisi? – VVB

+0

@VVB Snackbar hattı. –

cevap

1
Görünüm ebeveyne bağlı değilken O Snackbar oluşturamazsınız

(getContext'ten null değerini döndürür.

public class MainFragment extends Fragment { 

    View view; 
    public MainFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.fragment_main, null); 
     ImageView test = new ImageView(getContext()); 
     ImageView nyimg = (ImageView)view.findViewById(R.id.glidimg); 

     Glide.with(getContext()).load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg").into(nyimg); 



     // Picasso.with(getContext()).load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg").into(test); 
     return view; 
     //return inflater.inflate(R.layout.fragment_main, container, false); 
    } 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     Snackbar.make(view, "Some Message", Snackbar.LENGTH_INDEFINITE).show(); 
    } 
} 
+0

Şimdi çalışıyor. "OnActivityCreated()" –

0

CoordinatorLayout kullanmayı deneyin onResume() vb gibi yaşam döngüsü dan senin Snackbar.create()onActivityCreated veya başka bir yöntemi taşıyın.

Snackbar, hangisi daha önce gelirse, CoordinatorLayout veya pencere dekorunun içerik görünümü olarak tanımlanan uygun bir üst öğeyi bulmaya çalışırken görünüm ağacından yukarı çıkacaktır.

http://www.androidhive.info/2015/09/android-material-design-snackbar-example/

+0

'da Snackbar için getView() 'i kullandım, CoordinatorLayout tüm görünümümü değiştirmeyecek mi? –

+0

Bu, bu sorun için asla bir çözüm olamaz. –

İlgili konular