Android 使按钮可见和不可见
所以我的问题是,我做了下面的2个函数,目标是返回编辑文本是否有写的内容,如果有,我希望它使按钮可见,如果没有,我希望按钮保持不可见。但这不起作用,我要把我的代码全部显示出来 功能,这是我做的功能:Android 使按钮可见和不可见,android,button,android-edittext,show-hide,Android,Button,Android Edittext,Show Hide,所以我的问题是,我做了下面的2个函数,目标是返回编辑文本是否有写的内容,如果有,我希望它使按钮可见,如果没有,我希望按钮保持不可见。但这不起作用,我要把我的代码全部显示出来 功能,这是我做的功能: private boolean checkEditText(EditText edit) { return edit.getText().length() == 0; } void updateButtonState() { if(checkEditText(inputdtestab) &am
private boolean checkEditText(EditText edit) {
return edit.getText().length() == 0;
}
void updateButtonState() {
if(checkEditText(inputdtestab) && checkEditText(quantidade))
{
inputdtestab.setError("yipikaei");
quantidade.setError("mudfukkerrr");
}
else{
// Create button
Button btnCreateProduct = (Button) findViewById(R.id.button2);
btnCreateProduct.setVisibility(View.visible);
}
}
这不起作用,我想原因是它没有运行代码的else部分,因为我尝试创建一个按钮,当我点击它时,按钮会出现,并且工作正常。但我想怎么做就怎么做,没用
所有代码:
@SuppressLint({ "NewApi", "CutPasteId" })
public class Newlin_ProductActivity extends Activity{
/** WebServices */
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
EditText inputdtestab;
EditText inputdata;
EditText inputhora;
EditText quantidade;
EditText etDate;
Button change_date;
String id2;
String data;
String data2;
int Date_Dialog_ID=0;
int cDay,cMonth,cYear; // this is the instances of the current date
Calendar cDate;
int sDay,sMonth,sYear; // this is the instances of the entered date
// url to create new product
private static String url_create_product = "http://10.0.2.2/webprojecto4/inserir_lin_doc.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_ID = "id";
private static final String DATA = "dt";
private static final String DATA2 = "dt2";
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_linha);
Intent i = getIntent();
id2 = i.getStringExtra(TAG_ID);
data = i.getStringExtra(DATA);
data2 = i.getStringExtra(DATA2);
/** WebServices */
inputdtestab= (EditText) findViewById(R.id.editestab);
inputdata = (EditText) findViewById(R.id.editdata);
inputhora = (EditText) findViewById(R.id.edithora);
quantidade = (EditText) findViewById(R.id.editquantidade);
inputhora.setText(hr);
// Create button
Button btnCreateProduct = (Button) findViewById(R.id.button2);
// button click event
btnCreateProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// creating new product in background thread
new CreateNewProduct().execute();
}
});
updateButtonState();
}
//restriçoes ver
private boolean checkEditText(EditText edit) {
return edit.getText().length() == 0;
}
void updateButtonState() {
if(checkEditText(inputdtestab) && checkEditText(quantidade))
{
inputdtestab.setError("yipikaei");
quantidade.setError("mudfukkerrr");
}
else{
Button btnCreateProduct = (Button) findViewById(R.id.button2);
btnCreateProduct.setVisibility(View.visible);
}
}
private OnDateSetListener onDateSet=new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
System.out.println("2");
sYear=year;
sMonth=monthOfYear;
sDay=dayOfMonth;
updateDateDisplay(sYear,sMonth,sDay);
}
};
/**
* Background Async Task to Create new product
* */
class CreateNewProduct extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Newlin_ProductActivity.this);
pDialog.setMessage("Creating Product..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
/**
* Creating product
* */
protected String doInBackground(String... args) {
String id_estab = inputdtestab.getText().toString();
String quantidades = quantidade.getText().toString();
String data = inputdata.getText().toString();
String hr = inputhora.getText().toString();
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id_cab_doc", id2));
params.add(new BasicNameValuePair("num_lin", ""));//ir buscar criar
params.add(new BasicNameValuePair("id_produto", "00000"));
params.add(new BasicNameValuePair("id_tipo_produto", "00"));
params.add(new BasicNameValuePair("id_estab", id_estab));
params.add(new BasicNameValuePair("quantidade", quantidades));
params.add(new BasicNameValuePair("dt", data));
params.add(new BasicNameValuePair("hr", hr));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_product,
"POST", params);
// check log cat fro response
Log.d("Create Response", json.toString());
// check for success tag
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully created product
Intent i = new Intent(getApplicationContext(), Linhas_pesagem.class);
i.putExtra(TAG_ID, id2);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
// closing this screen
finish();
} else {
// failed to create product
Intent i = new Intent(getApplicationContext(), Linhas_pesagem.class);
i.putExtra(TAG_ID, id2);
startActivity(i);
finish();
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
}
}
}
@suppressint({“NewApi”,“CutPasteId”})
公共类Newlin_ProductActivity扩展活动{
/**网络服务*/
私人对话;
JSONParser JSONParser=新的JSONParser();
编辑文本输入选项卡;
编辑文本输入数据;
编辑文本输入;
编辑文本量化;
编辑文本日期;
按钮更改日期;
字符串id2;
字符串数据;
字符串数据2;
int Date_Dialog_ID=0;
int cDay,cMonth,cYear;//这是当前日期的实例
日历日期;
int sDay,sMonth,sYear;//这是输入日期的实例
//创建新产品的url
私有静态字符串url\u创建\u产品=”http://10.0.2.2/webprojecto4/inserir_lin_doc.php";
//JSON节点名称
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记\u ID=“ID”;
私有静态最终字符串数据=“dt”;
私有静态最终字符串DATA2=“dt2”;
@SuppressLint(“新API”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.add_linha);
Intent i=getIntent();
id2=i.getStringExtra(标签ID);
数据=i.getStringExtra(数据);
data2=i.getStringExtra(data2);
/**网络服务*/
inputdtestab=(EditText)findViewById(R.id.editestab);
inputdata=(EditText)findViewById(R.id.editdata);
inputhora=(EditText)findViewById(R.id.edithora);
quantidade=(EditText)findViewById(R.id.editquantidade);
inputhora.setText(hr);
//创建按钮
按钮btnCreateProduct=(按钮)findViewById(R.id.button2);
//按钮点击事件
btnCreateProduct.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//在后台线程中创建新产品
新建CreateNewProduct().execute();
}
});
updateButtonState();
}
//restriçoes ver
专用布尔值checkEditText(编辑文本编辑){
返回edit.getText().length()==0;
}
void updateButtonState(){
if(checkEditText(inputdestab)和&checkEditText(quantidade))
{
输入设置错误(“yipikaei”);
quantidade.setError(“Mudfukkerr”);
}
否则{
按钮btnCreateProduct=(按钮)findViewById(R.id.button2);
btnCreateProduct.setVisibility(View.visible);
}
}
私有OnDateSetListener onDateSet=新OnDateSetListener(){
@凌驾
公共无效onDateSet(日期选择器视图,整数年,整数月,
整数(每月的第几天){
//TODO自动生成的方法存根
系统输出打印项次(“2”);
sYear=年;
斯蒙特=蒙特霍夫年;
星期四=月日;
更新的显示(sYear,斯蒙顿,星期四);
}
};
/**
*创建新产品的后台异步任务
* */
类CreateNewProduct扩展了AsyncTask{
/**
*在启动后台线程显示进度对话框之前
* */
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(Newlin\u ProductActivity.this);
pDialog.setMessage(“创建产品…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
/**
*创造产品
* */
受保护的字符串doInBackground(字符串…args){
String id_estab=inputdestab.getText().toString();
字符串quantidades=quantidade.getText().toString();
字符串数据=inputdata.getText().toString();
字符串hr=inputhora.getText().toString();
//建筑参数
List params=new ArrayList();
添加参数(新的BasicNameValuePair(“id_cab_doc”,id2));
params.add(新的BasicNameValuePair(“num_-lin”,“”);//ir buscar criar
参数添加(新的BasicNameValuePair(“id_produto”,“00000”);
参数添加(新的BasicNameValuePair(“id_tipo_produto”,“00”);
参数添加(新的BasicNameValuePair(“id_estab”,id_estab));
参数添加(新的BasicNameValuePair(“quantidade”,quantidades));
参数添加(新的BasicNameValuePair(“dt”,数据));
参数添加(新的BasicNameValuePair(“hr”,hr));
//获取JSON对象
//请注意,创建产品url接受POST方法
JSONObject json=jsonParser.makeHttpRequest(url\u create\u product,
“POST”,params);
//检查cat fro响应日志
d(“创建响应”,json.toString());
//检查成功标签
试一试{
int success=json.getInt(TAG_success);
如果(成功==1){
//已成功创建产品
Intent i=新Intent(getApplicationContext(),Linhas_pesagem.class);
i、 putExtra(标签号,id2);
i、 添加标志(意图、标志、活动、清除、顶部);
星触觉(i);
//关闭此屏幕
完成();
}否则{
//未能创建产品
Intent i=新Intent(getApplicationContext(),Linhas_pesagem.class);
i、 putExtra(标签号,id2);
星触觉(i);
完成();
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
/**
*完成后台任务后,关闭“进度”对话框
* **/
受保护的void onPostExecute(字符串文件\u url){
//完成后关闭对话框
pDialog.disclose();
}
}
}
设置视图可见性
意味着您需要定义视图的id。相反,请使用:
yourButton.setVisibility( View.(GONE, HIDDEN, VISIBLE, ...))
“所以我的问题是,我做了2个函数,目标是返回edittext是否有写的内容,如果有,我希望它使按钮可见,如果没有,我希望buton保持不可见。但这不起作用,我要显示我所有的代码。”
所以基本上你想显示
void updateButtonState() {
// Create button
Button btnCreateProduct = (Button) findViewById(R.id.button2);
if(checkEditText(inputdtestab) && checkEditText(quantidade)) {
inputdtestab.setError("yipikaei");
quantidade.setError("mudfukkerrr");
// ==========================================
// make the button invisible.
btnCreateProduct.setVisibility(View.INVISIBLE); // or use View.GONE
} else {
// ==========================================
// make button visible.
// use the method "setVisibility", not "setViewVisibility"
// and "VISIBLE" in "View.VISIBLE" is in full cap:
btnCreateProduct.setVisibility(View.VISIBLE);
}
}
private TextWatcher myTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {}
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {}
public void afterTextChanged(Editable editable) {
// invoke the following method here:
updateButtonState();
}
};
inputdtestab.addTextChangedListener(myTextWatcher);
quantidade.addTextChangedListener(myTextWatcher);