Açıklamamda, bazı LinearLayout'lu Fragman var (örneğin, kimlik LL1'dir). LL1 arka plan rengini nasıl değiştirebilirim? Fragment.java içinde OnCreate içinde: Ben sharedpreferences (alfa ve renk iki değer var): bunu yapmak istiyorumFragmandaki rengi değiştirme
SharedPreferences pref = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
getView().findViewById(R.id.LL1).setBackgroundColor(Color.parseColor(pref.getString(TRANSP_KEY, "#CC") + pref.getString(FCOLOR_KEY, "5556FF")));
hatalar yoktur ama başlatmaya çalıştığınızda uygulama:
Unfortunately application has stopped
denedim:
LinearLayout LL= (LinearLayout) getView().findViewById(R.id.LL1);
LL.setBackgroundColor(Color.WHITE);
ama aynı sorun var
Muhtemelen setbackground işe yaramazsa, uygulama kaldırılmışsa ancak varsayılan renkler varsa (xml dosyasından).
Neyi yanlış yapıyorum?
fragment.java:
package com.hgyghyfghyu.apkana40;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import static com.hgyghyfghyu.apkana40.AppData.FCOLOR_KEY;
import static com.hgyghyfghyu.apkana40.AppData.TRANSP_KEY;
import static com.hgyghyfghyu.apkana40.AppData.prefdata;
import static com.hgyghyfghyu.apkana40.UserData.editor;
import static com.hgyghyfghyu.apkana40.UserData.pref;
/**
* A simple {@link Fragment} subclass.
*/
public class TrainerMenu extends Fragment {
public TrainerMenu() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
SharedPreferences pref = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
LinearLayout imageView = (LinearLayout) getView().findViewById(R.id.trainermenutrainersbtn);
imageView.setBackgroundColor(Color.WHITE);
// getView().findViewById(R.id.trainermenuadbtn).setBackgroundColor(Color.parseColor(pref.getString(TRANSP_KEY, "#CC") + pref.getString(FCOLOR_KEY, "33777F")));
//getView().findViewById(R.id.trainermenusettingsbtn).setBackgroundColor(Color.parseColor(pref.getString(TRANSP_KEY, "#CC") + pref.getString(FCOLOR_KEY, "5556FF")));
// getView().findViewById(R.id.trainermenuinfobtn).setBackgroundColor(Color.parseColor(pref.getString(TRANSP_KEY, "#CC") + pref.getString(FCOLOR_KEY, "5556FF")));
//getView().findViewById(R.id.trainermenugroupsbtn).setBackgroundColor(Color.parseColor(pref.getString(TRANSP_KEY, "#CC") + pref.getString(FCOLOR_KEY, "5556FF")));
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_trainer_menu, container, false);
}
}
olmalıdır hataları uygulama durdurdu bkz geçerli: Aşağıdaki
onViewCreated()
olarak bu yaklaşan bir yoluonCreateView()
hemen sonra denilmektedir. –Nerede kontrol edebilirim? hata ayıklama başarılı – littlewombat
Sadece bir yığın izleme olmadan kodunuzdan gidiyor, ben sadece (i) 'LL'nin 'setBackgroundColor()' çagırmadan önce 'LL'nin' null' olmadığından emin olmak için kontrol edebilirim ve (ii) emin ol onCreateView() 'dan sonra getView()' yi çağırıyorsunuz * (*): * Aslında, (ii) noktasında sorun olabilir, çünkü yukarıdaki kodu 'onCreate() 'de çalıştırmaya çalıştığınızı söylüyorsunuz ...bu noktada, 'getView()' 'null'ı döndürecek – PPartisan