2017-07-07 9 views
0

我希望喲通過單擊它來隱藏片段XML中的按鈕,因爲它總是會被隱藏,直到卸載應用程序爲止,通過共享首選項。但是我收到錯誤,「android.widget.button的未知方法setVisibility」和「btnsearch變量必須是本地類中最終使用的」。這裏是我的代碼:在片段中隱藏一個按鈕,以便始終使用共享首選項

package com.niezwm.bododictionary.fragments; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.Toast; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.content.Context; 
import android.content.SharedPreferences; 
import com.niezwm.bododictionary.R; 


public class SearchFragment extends Fragment{ 

SharedPreferences sharedPreferences; 
Button btnsearch; 



public SearchFragment() { 
// Required empty public constructor 
} 

@Override 
public void onCreate(Bundle  savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 
@Override 
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ 
View rootView = inflater.inflate(R.layout.fragment_search, container,false); 
Button btnsearch =(Button) rootView.findViewById(R.id.btnsearch); 
SharedPreferences sharedPreferences =this.getActivity().getSharedPreferences("pref",0); 
btnsearch.setVisiblity(sharedPreferences.getBoolean("visiblity",false)); 
     btnsearch.setOnClickListener(new View.OnClickListener(){ 
@Override 
public void onClick(View view){ 
if(
         btnsearch.getVisibility()==View.INVISIBLE){ 
     btnsearch.setVisibility(View.VISIBLE); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
        editor.putBoolean("visiblity",true) 
         .commit(); 
         } 
        Toast.makeText(getActivity(), "search", Toast.LENGTH_LONG).show(); 
} 
// end onClick 
}); 
return rootView; 
} 
// end onCreateView 
} 

回答

0

如果您訪問這兩個變量的匿名內部類,你必須讓他們最後:

final Button btnsearch = (Button) rootView.findViewById(R.id.btnsearch); 
final SharedPreferences sharedPreferences = this.getActivity().getSharedPreferences("pref", 0); 

編輯

setVisibility()想要一個int,不一個布爾值。

boolean visibility = sharedPreferences.getBoolean("visiblity", false); 
btnsearch.setVisibility(visibility ? View.VISIBLE : View.GONE); 
+0

setVisibility也會出錯 – Niezwm

+0

setVisibility需要一個int作爲輸入,而不是布爾值。您根據您從sharedPreferences獲取的布爾值設置可見性。 –

+0

您可以編輯我的代碼添加您的更正,謝謝。 – Niezwm