setText on button from another activity android
I have a problem, I want to click on the list, calling a new activity and rename the button to another name.
I tried several things, nothing worked, can someone please help me?
My class EditarTimes
private AdapterView.OnItemClickListener selecionarTime = new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView arg0, View arg1, int pos, long id) { t = times.get(pos); CadastroTimes cad = new CadastroTimes(); CadastroTimes.salvar.setText("Alterar"); Intent intent = new Intent(EditarTimes.this, CadastroTimes.class); startActivity(intent); } };
public class CadastroTimes extends AppCompatActivity { private Time t; private timeDatabase db; private EditText edID; private EditText edNome; public Button salvar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cadastro_times); edID = (EditText) findViewById(R.id.edID); edNome = (EditText) findViewById(R.id.edNome); db = new timeDatabase(getApplicationContext()); salvar = (Button) findViewById(R.id.btnCadastrar); salvar.setText("Cadastrar"); String newString; if (savedInstanceState == null) { Bundle extras = getIntent().getExtras(); if(extras == null) { newString= null; } else { newString= extras.getString("Alterar"); } } else { newString= (String) savedInstanceState.getSerializable("Alterar"); } //button in CadastroTimes activity to have that String as text System.out.println(newString + " AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); salvar.setText(newString); } public void salvarTime(View v) { t = new Time(); t.setNome(edNome.getText().toString()); if (salvar.getText().equals("Alterar")) { db.atualizar(t); exibirMensagem("Time atualizado com sucesso!"); } else { db.salvar(t); exibirMensagem("Time cadastrado com sucesso!"); } Intent intent = new Intent(this, EditarTimes.class); startActivity(intent); } private void limparDados() { edID.setText(""); edNome.setText(""); edNome.requestFocus(); } private void exibirMensagem(String msg) { Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); } }
public class EditarTimes extends AppCompatActivity { private Time t; private List times; private timeDatabase db; private ListView lvTimes; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_editar_times); lvTimes = (ListView) findViewById(R.id.lvTimes); lvTimes.setOnItemClickListener(selecionarTime); lvTimes.setOnItemLongClickListener(excluirTime); times = new ArrayList(); db = new timeDatabase(getApplicationContext()); atualizarLista(); } private void excluirTime(final int idTime) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Excluir time?") .setIcon(android.R.drawable.ic_dialog_alert) .setMessage("Deseja excluir esse time?") .setCancelable(false) .setPositiveButton(getString(R.string.sim), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { if (db.deletar(idTime)) { atualizarLista(); exibirMensagem(getString(R.string.msgExclusao)); } else { exibirMensagem(getString(R.string.msgFalhaExclusao)); } } }) .setNegativeButton(getString(R.string.nao), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder.create(); builder.show(); atualizarLista(); } private void atualizarLista() { times = db.listAll(); if (times != null) { if (times.size() > 0) { TimeListAdapter tla = new TimeListAdapter( getApplicationContext(), times); lvTimes.setAdapter(tla); } } } private AdapterView.OnItemClickListener selecionarTime = new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView arg0, View arg1, int pos, long id) { t = times.get(pos); Intent intent = new Intent(EditarTimes.this, CadastroTimes.class); String strName = "Alterar"; intent.putExtra("Alterar", strName); startActivity(intent); //preecherDados(t); } }; private AdapterView.OnItemLongClickListener excluirTime = new AdapterView.OnItemLongClickListener() { public boolean onItemLongClick(AdapterView arg0, View arg1, int pos, long arg3) { excluirTime(times.get(pos).getId()); return true; } }; /*private void preecherDados(Time time) { edID.setText(String.valueOf(time.getId())); edNome.setText(time.getNome()); }*/ private void exibirMensagem(String msg) { Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); } public void telaCadastrar(View view) { Intent intent = new Intent(this, CadastroTimes.class); startActivity(intent); } public void botaoSair(View view) { Intent intent = new Intent(this, TelaInicial.class); startActivity(intent); } }
You can pass the button caption to CadastroTimes
with intent as
Intent intent = new Intent(EditarTimes.this, CadastroTimes.class);
intent.putExtra("buttontxt","Changed Text");
startActivity(intent);
Then in CadastroTimes.java
set the text of the button to the new value that you passed. The code will look like:
button = (Button)findViewById(R.id.button); // This is your reference from the xml. button is my name, you might have your own id given already.
Bundle extras = getIntent().getExtras();
String value = ""; // You can do it in better and cleaner way
if (extras != null) {
value = extras.getString("buttontxt");
}
button.setText(value);
Do remember to do it in onCreate
after setContentView
//From Activity
Intent intent = new Intent(EditarTimes.this, CadastroTimes.class);
intent.pueExtra("chang_tag", "text to change");
startActivity(intent)
//To Activity
public void onCreate(..){
Button changeButton = (Button)findViewById(R.id.your_button);
// Button to set received text
Intent intent = getIntent();
if(null != intent) {
String changeText = intent.getStringExtra("chang_tag", "");
// Extracting sent text from intent
(!TextUtils.isEmpty(changeText )){
changeButton.setText(changeText);
// Setting received text on Button
}
}
}
Sorry I am bit late. However, I hope will help you.
For changing the button text:
上一篇: 如何阅读Android Wear的心率