2014-05-24 6 views
0

내 문제는 다음과 같은 ive입니다. edittext에 문안이 있거나 없는지를 반환하는 것이 목적입니다. 만약 내가 원한다면 버튼을 보이게하고 싶습니다. buton은 보이지 않는 채로 있습니다. 그러나이 밤은 작업 메신저 Gona을 내 모든 코드를표시 및 보이지 않는 버튼 만들기

기능을 보여,이 만든 필자 기능은 다음과 같습니다

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); 

    } 
} 

이 그나마 작업이와 내가 그것을 코드의 다른 부분을 실행 나던 때문에 이유는 생각, 왜냐하면 나는 버튼을 만들려고했기 때문에 그것을 클릭하면 버튼이 나타나고 잘 동작하기 때문이다. 하지만 내가 원하는대로하고, 그것은 작동하지 않습니다.

모든 코드 :

@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(); 
} 

} 


} 

답변

0

"그래서 내 문제는 필자 목적이 글고 그것은이있는 경우, 내가 그렇지 않은 경우 버튼을 볼 수 있도록 할 writen 여부 뭔가가있는 경우 반환하는 것입니다 2 fucntion을 만든 다음이다 나는 buton을 보이지 않게하고 싶다. 그러나 이것은 나의 코드를 모두 보여주고있는 것은 아니다. "

기본적으로 입력 값이 EditText보기에 제공되면 단추를 표시하려고합니다. 그렇지 않으면 버튼을 숨 깁니다.

을 편집 updateButtonState() 방법은 다음과 같습니다 :

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); 
    } 
} 

btnCreateProduct.setVisibility(View.INVISIBLE); 쓰기 버튼을 보이지 않게합니다.

단추가 보이지 않을 때 공간을 차지하려면 View.INVISIBLE 대신 View.GONE을 사용할 수 있습니다. EditText S는 당신이 EditText의 텍스트의 변경을 듣고 있고, 입력하면 [

UPDATE 즉시 버튼을 표시합니다. 먼저 TextWatcher을 구현합니다.
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(); 
    } 
}; 

다음은 EditText의의 모두에 대한 리스너로서 감시자를 추가합니다.

inputdtestab.addTextChangedListener(myTextWatcher); 
quantidade.addTextChangedListener(myTextWatcher); 

+0

doesnt는 똑같이 작동한다. – user3626801

+0

나는 그런 식으로 사용했기 때문에 작동하지 않는다. – user3626801

+0

@ user3626801 무엇을 의미 하는가? 'setVisibility (View.VISIBLE);'는 버튼을 숨기지 않습니까? – RestInPeace

0

setViewVisibility는 뷰의 ID를 정의 할 필요가 있다는 것을 의미한다. 대신, 사용 :

yourButton.setVisibility(View.(GONE, HIDDEN, VISIBLE, ...)) 
+0

이미 완료되었지만 작동하지 않습니다. 내가 프로젝트를 실행하고 edittexts를 채울 때 버튼이 사라지지 않는다. – user3626801

관련 문제