2015-11-08 21 views
1

我有一个问题,我想点击列表,调用一个新的活动,并将按钮重命名为另一个名称。setText从另一个活动的按钮android

我尝试了几件事,没有任何工作,有人可以帮我吗?

我班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); 
    } 
}
+0

不推荐使用的方法,这是不公平的。 – Androider

+0

帖子适配器和活动/片段完整代码。 –

+0

如果按钮处于'CadastroTimes'然后做'CadastroTimes'而不是'EditarTimes' –

回答

0

好了,第一步是采取你想要的按钮,使它成为一个公共静态对象(并把它在的顶部类)。

public static Button button; 

然后你就可以操作,在另一个类使用此:

ClassName.button.setText("My Button"); 

在你的情况下,它是

CadastroTimes.salvar.setText("Alterar"); 
+0

public class CadastroTimes extends AppCompatActivity { private time t; private timeDatabase db; 私人EditText edID; 私人EditText edNome; public static Button salvar; –

+0

是的,这将使它可以跨班使用。让我知道这是否适合你。 – alex23434

+0

我无法使用salvar.setText(“Alterar”); on class editarTimes –

0

现在,我给你:

EditarTimes活动与listview

//set setOnItemClickListener 

youtListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 

    Intent i = new Intent(EditarTimes.this, CadastroTimes.class); 
//text which you want to display on the button to CadastroTimes activity 
    String strName = "hello button"; 
    i.putExtra("STRING_I_NEED", strName);    
       } 
      }); 

CadastroTimes活动,

onCreate()方法,得到的文本字符串为: - 在CadastroTimes活动

String newString; 
if (savedInstanceState == null) { 
    Bundle extras = getIntent().getExtras(); 
    if(extras == null) { 
     newString= null; 
    } else { 
     newString= extras.getString("STRING_I_NEED"); 
    } 
} else { 
    newString= (String) savedInstanceState.getSerializable("STRING_I_NEED"); 
} 

//按钮,有一个String作为文本 yourButton.setText(newString) ;

+0

按钮是空白,没有任何文字:{我想我不知道如何做到这一点:{ –

+0

它是不可能的,尝试检查字符串值在CadastroTimes活动所收到的,那么也可以在按钮上用作文本。让我知道ASAP – Androider

+0

收到的值为空x.x –

3

你可以故意按钮标题传递给CadastroTimes作为

Intent intent = new Intent(EditarTimes.this, CadastroTimes.class); 
intent.putExtra("buttontxt","Changed Text"); 
startActivity(intent); 

然后在CadastroTimes.java设置按钮来,你通过了新的价值的文本。该代码如下:

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

千万别忘了做在onCreatesetContentView

+0

该按钮是空白的,没有任何字词:{我认为我不知道该怎么做:{ –

+0

我已经添加了可以复制粘贴的代码。请将更改的代码放入适当的类中。您需要更改CadastroTimes.java中的按钮ID(将您的按钮ID而不是我的R.id.button)。您的getExtras可能为空。因此,如果您使用我提供的EditarTimes中的代码更改代码,这应该可以正常工作。让我知道。 –

+0

我放弃了,我试过了,试过了,无法让它工作,我正在创建一个新的活动来解决我的问题,谢谢你帮助我,并为浪费你的时间而感到抱歉。 –

0

为了改变按钮上的文字:

  1. 使用一个静态方法来从其他活动直接调用修改按钮标题。
  2. 使用意向功能,这是更可取的。
  3. 使用一个接口并实现它,它用于以火灾和遗忘原则的方式在活动或碎片之间进行通信。
0

1:使用intent.putExtra()从一个活动另一个活动共享一个值,如:

ActivityOne。类:

Intent intent = new Intent(getApplicationContext(), ActivityTwo.class); 
intent.putExtra("key", "value"); 
intent.startActivity(); 

ActivityTwo.class

Intent intent = getIntent(); 
String var = intent.getStringExtra("key"); 

2:修改按钮文本编程为:

btn_object.setText(var); 

希望这将帮助你

0
//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 

     } 
    } 
} 

对不起,我迟到了一点。不过,我希望能帮到你。

相关问题