2016-12-27 4 views
0

Я новичок в Android и Java, и я занят редактированием существующего приложения. Я пытаюсь скрыть кнопку, если текст не загружается из веб-службы. Я сделал его работу с другой кнопкой, когда текст заселяетсяскрыть кнопку, если длина текста <1 в студии android

if (textEvent.length() > 1) { 
    buttonEventSetup.setVisibility(View.INVISIBLE); 
} 

но когда я использовал:

if (textEvent.length() < 1) { 
    buttonAccessControl.setVisibility(View.INVISIBLE); 
} 

ничего не кажется, происходит.

Я не знаю, находится ли фрагмент кода в другом месте или что-то еще переписывает код. Вот мой код вида деятельности:

package com.example.dsouchon.myapplication; 
    public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button buttonEventSetup = (Button)findViewById(R.id.buttonEventSetup); 

    if(Local.isSet(getApplicationContext(), "LoggedIn")) 
    { 
     String loggedInUser = Local.Get(getApplicationContext(), "LoggedIn"); 
     if(loggedInUser.length()>0) 
     { 
      buttonEventSetup.setVisibility(View.VISIBLE); 
     } 
     else 
     { 
      buttonEventSetup.setVisibility(View.GONE); 
     } 
    } 
    else 
    { 
     buttonEventSetup.setVisibility(View.GONE); 
    } 

    if(Local.isSet(getApplicationContext(), "EventName")) 
    { 
     String event = Local.Get(getApplicationContext(), "EventName"); 
     TextView textEvent = (TextView) findViewById(R.id.textEventName); 
     textEvent.setText(event); 
     Button buttonAccessControl = (Button)findViewById(R.id.buttonAccessControl); 
     buttonAccessControl.setEnabled(true); 

     //HIDES SET EVENT BUTTON WHEN EVENT IS SET 
     if (textEvent.length() > 1) { 
      buttonEventSetup.setVisibility(View.INVISIBLE); 
     } 
     if (textEvent.length() < 1) { 
      buttonAccessControl.setVisibility(View.INVISIBLE); 
     } 
    } 
    else 
    { 
     Button buttonAccessControl = (Button)findViewById(R.id.buttonAccessControl); 
     buttonAccessControl.setEnabled(false); 
    } 

    if(Local.isSet(getApplicationContext(), "EventImage")) 
    { 
     TextView textEvent = (TextView) findViewById(R.id.textEventName); 
     String result = Local.Get(getApplicationContext(), "EventImage"); 

     ImageView imageViewEventImage = (ImageView)findViewById(R.id.imageViewEventImage); 
     byte[] decodedString = Base64.decode(result, Base64.DEFAULT); 
     Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
     imageViewEventImage.setImageBitmap(decodedByte); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main2, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

public void setupEvent(View view) { 
    Intent intent = new Intent(MainActivity.this, SetupEvent.class); 
    finish(); 
    startActivity(intent); 
} 

public void accessControl(View view) { 
    Button buttonEventSetup = (Button)findViewById(R.id.buttonEventSetup); 
    buttonEventSetup.setVisibility(View.GONE); 

    Intent intent = new Intent(MainActivity.this, MainActivity21.class); 
    finish(); 
    startActivity(intent); 
} 

public void Logoff(View view) { 
    Local.Set(getApplicationContext(), "LoggedIn", ""); 
} 

public void Login(View view) { 
    final AlertDialog ad=new AlertDialog.Builder(this).create(); 
    MySOAPCallActivity cs = new MySOAPCallActivity(); 
    try { 
     EditText userName = (EditText) findViewById(R.id.editUserName); 
     EditText password = (EditText) findViewById(R.id.editPassword); 
     String user = userName.getText().toString(); 
     String pwd = password.getText().toString(); 
     LoginParams params = new LoginParams(cs, user, pwd); 

     Local.Set(getApplicationContext(), "UserName", user); 
     Local.Set(getApplicationContext(), "Password", pwd); 

     new CallSoapLogin().execute(params); 
     // new CallSoapGetCurrentEvents().execute(params); 

    } catch (Exception ex) { 
     ad.setTitle("Error!"); 
     ad.setMessage(ex.toString()); 
    } 
    ad.show(); 
} 

public class CallSoapLogin extends AsyncTask<LoginParams, Void, String> { 

    private Exception exception; 

    @Override 
    protected String doInBackground(LoginParams... params) { 
     return params[0].foo.Login(params[0].username, params[0].password); 
    } 

    protected void onPostExecute(String result) { 
     // TODO: check this.exception 
     // TODO: do something with the feed 
     try { 

     TextView loginResult =(TextView)findViewById(R.id.labelLoginResult); 
     loginResult.setVisibility(View.VISIBLE); 
     loginResult.setText(result); 

     // Button buttonUnsetEvent = (Button)findViewById(R.id.buttonUnsetEvent); 
     // buttonUnsetEvent.setEnabled(true); 

     //Spinner spinner2 = (Spinner)findViewById(R.id.spinner2); 
     //spinner2.setEnabled(true); 

     boolean LoginSuccessful = false; 

     if(result.toLowerCase().contains("success")) 
     { 
      LoginSuccessful = true; 
     } 

     if (LoginSuccessful) 
     { 
      String user = Local.Get(getApplicationContext(), "UserName"); 
      Local.Set(getApplicationContext(), "LoggedIn", user); 
      LinearLayout layoutLoggedIn = (LinearLayout)findViewById(R.id.layoutLoggedIn); 
      layoutLoggedIn.setVisibility(View.VISIBLE); 

      Button buttonEventSetup = (Button)findViewById(R.id.buttonEventSetup); 
      buttonEventSetup.setVisibility(View.VISIBLE); 

      LinearLayout layoutLogIn = (LinearLayout)findViewById(R.id.layoutLogIn); 
      layoutLogIn.setVisibility(View.VISIBLE); 

     } 
     } catch (Exception ex) { 
      String e3 = ex.toString(); 
     } 
    } 
} 
private static class LoginParams { 
    MySOAPCallActivity foo; 
    String username; 
    String password; 

    LoginParams(MySOAPCallActivity foo, String username, String  password) { 
     this.foo = foo; 
     this.username = username; 
     this.password = password; 

     } 
    } 
} 
+0

вы пробовали отладки, чтобы проверить, если код используется для скрытия кнопки достигается? –

+1

textEvent - это textView, а не String, 'textEvent.getText(). ToString();' в противном случае вы получите какой-либо способ для него, потому что он возвращает iD, если его нулевой –

+0

oh textevent - это текстовое представление, не обратите внимание! @Charuka прав, вот в чем проблема –

ответ

0

Вы получаете длину TextView, что не будет work.Use текст length.This должен работать

String event = Local.Get(getApplicationContext(), "EventName"); 
    //HIDES SET EVENT BUTTON WHEN EVENT IS SET 
    if (event.length() > 1) { 
     buttonEventSetup.setVisibility(View.VISIBLE); 
    } 
    if (event.length() < 1) { 
     buttonAccessControl.setVisibility(View.INVISIBLE); 
    } 
0

В коде выше textEvent не строковое значение , Это объект типа TextView. length() в этом случае не вернет длину текста, содержащегося в этом элементе. Вам нужно будет явно получить текстовую строку, прежде чем вы сможете получить ее длину. Это получено с использованием метода getText() на TextView.

Ваш код должен выглядеть следующим образом:

//HIDES SET EVENT BUTTON WHEN EVENT IS SET 
     if (textEvent.getText().length() >= 1) { 
      buttonEventSetup.setVisibility(View.VISIBLE); 
     } 
     if (textEvent.getText().length() < 1) { 
      buttonAccessControl.setVisibility(View.INVISIBLE); 
     } 

Вы также INVISIBLE на обоих случаях в вашем публикуемую примере кода.

Обратите внимание, что ваш код также не обрабатывает случаи, когда длина текста == 1. Вы можете упростить весь блок следующим образом.

Примечание: любое значение = 0 классифицируется как истинный

buttonEventSetup.setVisibility(textEvent.getText().length() ? View.VISIBLE : View.INVISIBLE); 
Смежные вопросы