2017-07-07 10 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