gpt4 book ai didi

java - 更改 fragment 中的颜色

转载 作者:行者123 更新时间:2023-12-01 10:08:48 25 4
gpt4 key购买 nike

在我的aaplication中是带有一些LinearLayout的Fragment(例如id是LL1)。如何更改 LL1 背景颜色?我想通过 Fragment.java 中 OnCreate 中的共享首选项(有两个值:alpha 和颜色)来完成此操作:

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")));

没有错误,但是当我尝试启动应用程序时:

Unfortunately application has stopped

我尝试过:

LinearLayout LL= (LinearLayout) getView().findViewById(R.id.LL1);
LL.setBackgroundColor(Color.WHITE);

但是有同样的问题

如果删除应用程序,setbackground 可能不起作用,但它具有默认颜色(来自 xml 文件)。

我做错了什么?

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);
}

}

最佳答案

I want to do it in OnCreate in Fragment:

好吧,你不能。 getView() 将在 onCreate 中返回空 View ,因为 View 尚未创建。

在为您的 Fragment 扩展布局 XML 后,请将代码移至 onCreateView 并在已扩展的 View 上使用 findViewById 而不是使用 getView()

在代码中

View v = inflater.inflate(R.layout.fragment_trainer_menu, container, false);
v.findViewById...
return v;

关于java - 更改 fragment 中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36297906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com