2017-03-09 109 views
0

我想更改片段的背景顏色。但是當我點擊按鈕時,什麼都沒有發生。我無法更改Android中片段的背景顏色

在我的主要活動佈局XML文件中,我導入了片段。

這裏是我的代碼:

public class Top_Fragment extends Fragment implements View.OnClickListener { 
    Button button; 
    LinearLayout mLinearLayout; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.top_fragment, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     button = (Button) getActivity().findViewById(R.id.button); 
     mLinearLayout = (LinearLayout) getActivity().findViewById(R.id.layout); 
    } 

    @Override 
    public void onClick(View v) { 
     mLinearLayout.setBackgroundColor(Color.parseColor("#ffffbb33")); 
    } 
} 
+1

發佈您的xml代碼和活動代碼也 – Bhavnik

+1

而不是在這裏把愚蠢的問題。首先,正確學習android基礎知識。 [請點擊此處](http://www.androidhive.info/) –

+0

您是否爲按鈕設置了「setOnClickListener」?另一個問題,按鈕是在片段還是活動佈局?如果活動,爲什麼不在Activity中做這個,如果另一個你應該使用'fragmentView.findViewById'而不是'getActivity()。findViewById'。 – xiaoyuan

回答

0

更換

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.top_fragment,container, false); 

} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    button = (Button)getActivity().findViewById(R.id.button); 
    mLinearLayout = (LinearLayout)getActivity().findViewById(R.id.layout); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View fragmentView = inflater.inflate(R.layout.top_fragment,container, false) 

    button = (Button)fragmentView.findViewById(R.id.button); 
    button.setOnClickListener(this); 
    mLinearLayout = (LinearLayout)fragmentView.findViewById(R.id.layout); 

    return fragmentView; 

} 
+0

仍然不工作 –

+0

@GugaRai更新了答案,我假設你設置了一個onClick監聽器,但它可能不是 –

+0

當我粘貼此代碼mLinearLayout.setBackgroundColor(Color.parseColor(「#ffffbb33」));裏面onCreateView它的工作,但是當我粘貼在onClick它不工作 –

1

你的代碼是完美,但你需要添加button.setOnClickListener(本);

 @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    button = (Button)getActivity().findViewById(R.id.button); 
    mLinearLayout = (LinearLayout)getActivity().findViewById(R.id.layout); 
    button.setOnClickListener(this); } 
+0

下面的答案工作是我也忘了添加button.setOnClickListener(this);但我包括查看基地linearlayout的基類工作我的代碼,所以下面的人給了我答案檢查出下面的答案 –