首页 > 解决方案 > 更改 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);

    }

}

如果有人可以帮助我,我会很高兴!

标签: javaandroidandroid-fragments

解决方案


删除 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 回答...!


推荐阅读