java - 更改 Fragment 的背景图片
问题描述
我试图在几秒钟后更改片段的背景图像,但我仍然遇到问题!我使用了片段,因为我使用了标签栏。该应用程序将正常工作,直到 2.5 秒,这是改变背景的时间!我确信问题是由代码而不是应用程序引起的!
这是我的代码:
public class LogInFragment extends android.support.v4.app.Fragment {
LinearLayout login_layout;
public LogInFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
login_layout = (LinearLayout) getActivity().findViewById(R.id.linear1);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
change();
}
}, 2500);
}
private void change()
{
Random random = new Random();
int image_change = random.nextInt(5 - 1) + 1;
switch (image_change)
{
case 1:
login_layout.setBackgroundResource(R.drawable.blue1);
break;
case 2:
login_layout.setBackgroundResource(R.drawable.yellow1);
break;
case 3:
login_layout.setBackgroundResource(R.drawable.red1);
break;
default:
login_layout.setBackgroundResource(R.drawable.green1);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_log_in, container, false);
}
}
如果有人可以帮助我,我会很高兴!
解决方案
删除 login_layout = (LinearLayout) getActivity().findViewById(R.id.linear1); 从创建。因为在fragment中我们必须使用inflate,所以在oncreateview中找到视图。在 oncreateview 中试试这个: View rootView = inflater.inflate(R.layout.fragment_log_in, container, false); login_layout = (LinearLayout) rootView.findViewById(R.id.linear1); 返回根视图
由@user3576118 回答...!
推荐阅读
- spring-webflux - 有没有办法修改 Spring 创建的默认协程上下文?
- fs - 如何使用 javascript 通过 nexe 访问已编译的 .exe 中的捆绑文件
- javascript - 从导入的 .obj 模型中拖动顶点
- r - GGPLOT 轴操作
- splunk - Splunk 查询:按 _meta 字段过滤
- tensorflow - 程序总是只预测 1 个类
- laravel - 当我转储请求时显示 Laravel Lumen .env 变量值
- sql - SQL Exec CrossTab 问题 - ',' 附近的语法不正确
- azure-resource-manager - ARM 模板 - 解释参数部分下的“参考:{}”属性
- javascript - 在反应下拉组件中创建子标题