选择哪个按钮出现在工具栏中
Choose which button appears in toolbar
我有一个 activity A 和一个 activity B。我可以在 activity A 中通过两种不同的方式访问 activity B:通过单击添加按钮,或通过单击我的 ListView 的 ContextMenu 的选项修改。
事情是这样的:如果我单击“添加”按钮,我想向该 listView 添加一些内容,但如果我单击“修改”,我想修改该行的值。
但是,当我到达那个 activity B 时,两个按钮都会出现在工具栏中。 但如果我在 activity A 中单击添加,我只需要添加按钮。如果我在修改中单击,我需要 Refresh/Update 按钮。
我已经可以检查我以前用什么方式到达 Activity B,但我不知道如何隐藏另一个按钮,具体取决于我选择的方式。
这是我的菜单:
<item
android:id="@+id/action_save"
android:title="Save"
android:icon="@drawable/ic_action_save"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/action_update"
android:title="Update"
android:icon="@drawable/ic_action_update"
app:showAsAction="ifRoom"
/>
这是 Activity B 上的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_addcours_notes, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.action_save:
cours = (EditText)findViewById(R.id.ETCours);
String nom_cours= cours.getText().toString();
TextView tv_cours = (TextView)findViewById(R.id.TVCours);
if(nom_cours.length()<=0 || nom_cours.length()<3)
{
Toast ok = Toast.makeText(AjoutCours.this, "Veuillez insérer un nom pour votre cours (minimum 3 caractères).", Toast.LENGTH_SHORT);
ok.show();
tv_cours.setTextColor(Color.RED);
}
else
{
Cours c = new Cours();
c.setCours(nom_cours);
dbhelper.Open();
dbhelper.insertCours(c);
Intent a = new Intent(AjoutCours.this, AffichageCours.class);
startActivity(a);
}
return true;
case R.id.action_update:
Intent intent = this.getIntent();
String nomcours = intent.getExtras().getString("cours_nom");
EditText cours =(EditText)findViewById(R.id.ETCours);
String newcours = cours.getText().toString();
dbhelper.Open();
dbhelper.updateCours(newcours,nomcours);
Intent retour = new Intent(AjoutCours.this,AffichageCours.class);
startActivity(retour);
return true;
以下是我如何在 activity B 中产生差异(我从 activity A 中获取额外信息):
Intent intent = this.getIntent();
if(intent != null)
{
String option = intent.getExtras().getString("cours");
if(option.equals("ajouter"))
{
}
if(option.equals("modifier"))
{
String nomcours = intent.getExtras().getString("cours_nom");
EditText _nomcours=(EditText)findViewById(R.id.ETCours);
_nomcours.setText(nomcours);
}
}
如果您需要更多代码,请告诉我!
谢谢!
像这样:
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.action_save);
MenuItem item2 = menu.findItem(R.id.action_update);
if(option.equals("ajouter"))
{
item.setVisible(true);
item2.setVisible(false);
}else{
item.setVisible(false);
item2.setVisible(true);
}
}
我有一个 activity A 和一个 activity B。我可以在 activity A 中通过两种不同的方式访问 activity B:通过单击添加按钮,或通过单击我的 ListView 的 ContextMenu 的选项修改。
事情是这样的:如果我单击“添加”按钮,我想向该 listView 添加一些内容,但如果我单击“修改”,我想修改该行的值。
但是,当我到达那个 activity B 时,两个按钮都会出现在工具栏中。 但如果我在 activity A 中单击添加,我只需要添加按钮。如果我在修改中单击,我需要 Refresh/Update 按钮。
我已经可以检查我以前用什么方式到达 Activity B,但我不知道如何隐藏另一个按钮,具体取决于我选择的方式。
这是我的菜单:
<item
android:id="@+id/action_save"
android:title="Save"
android:icon="@drawable/ic_action_save"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/action_update"
android:title="Update"
android:icon="@drawable/ic_action_update"
app:showAsAction="ifRoom"
/>
这是 Activity B 上的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_addcours_notes, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.action_save:
cours = (EditText)findViewById(R.id.ETCours);
String nom_cours= cours.getText().toString();
TextView tv_cours = (TextView)findViewById(R.id.TVCours);
if(nom_cours.length()<=0 || nom_cours.length()<3)
{
Toast ok = Toast.makeText(AjoutCours.this, "Veuillez insérer un nom pour votre cours (minimum 3 caractères).", Toast.LENGTH_SHORT);
ok.show();
tv_cours.setTextColor(Color.RED);
}
else
{
Cours c = new Cours();
c.setCours(nom_cours);
dbhelper.Open();
dbhelper.insertCours(c);
Intent a = new Intent(AjoutCours.this, AffichageCours.class);
startActivity(a);
}
return true;
case R.id.action_update:
Intent intent = this.getIntent();
String nomcours = intent.getExtras().getString("cours_nom");
EditText cours =(EditText)findViewById(R.id.ETCours);
String newcours = cours.getText().toString();
dbhelper.Open();
dbhelper.updateCours(newcours,nomcours);
Intent retour = new Intent(AjoutCours.this,AffichageCours.class);
startActivity(retour);
return true;
以下是我如何在 activity B 中产生差异(我从 activity A 中获取额外信息):
Intent intent = this.getIntent();
if(intent != null)
{
String option = intent.getExtras().getString("cours");
if(option.equals("ajouter"))
{
}
if(option.equals("modifier"))
{
String nomcours = intent.getExtras().getString("cours_nom");
EditText _nomcours=(EditText)findViewById(R.id.ETCours);
_nomcours.setText(nomcours);
}
}
如果您需要更多代码,请告诉我!
谢谢!
像这样:
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.action_save);
MenuItem item2 = menu.findItem(R.id.action_update);
if(option.equals("ajouter"))
{
item.setVisible(true);
item2.setVisible(false);
}else{
item.setVisible(false);
item2.setVisible(true);
}
}