En-Tête commun à différentes activités à l'aide de BaseActivity dans android
Je veux écrire du code une fois et l'utiliser dans différentes activités. J'ai créé un Base Activity class
pour que . Aussi l'en-tête de toutes les mises en page différentes activités sont les mêmes. Je l'ai fait avec l'aide de la <include layout >
tag.
Maintenant, le Problème, c'est mon BaseActivity
code n'est pas en cours d'exécution. Je suis en train d'essayer cette première fois se n'ont pas beaucoup d'idée à ce sujet.
1.)Le BaseActivity code est ci-dessous :
package com.waheguru.app;
import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public abstract class BaseActivityMenu extends Activity {
//action id
private static final int ID_UP = 1;
private static final int ID_DOWN = 2;
private static final int ID_SEARCH = 3;
private static final int ID_INFO = 4;
private static final int ID_ERASE = 5;
private static final int ID_OK = 6;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.header);
ActionItem nextItem = new ActionItem(ID_DOWN, "Book", getResources().getDrawable(R.drawable.menu_down_arrow));
ActionItem prevItem = new ActionItem(ID_UP, "Bookmark", getResources().getDrawable(R.drawable.menu_up_arrow));
ActionItem searchItem = new ActionItem(ID_SEARCH, "Find", getResources().getDrawable(R.drawable.menu_search));
ActionItem infoItem = new ActionItem(ID_INFO, "Info", getResources().getDrawable(R.drawable.menu_info));
ActionItem eraseItem = new ActionItem(ID_ERASE, "Clear", getResources().getDrawable(R.drawable.menu_eraser));
ActionItem okItem = new ActionItem(ID_OK, "OK", getResources().getDrawable(R.drawable.menu_ok));
//use setSticky(true) to disable QuickAction dialog being dismissed after an item is clicked
prevItem.setSticky(true);
nextItem.setSticky(true);
//create QuickAction. Use QuickAction.VERTICAL or QuickAction.HORIZONTAL param to define layout
//orientation
final QuickAction quickAction = new QuickAction(this, QuickAction.VERTICAL);
//add action items into QuickAction
quickAction.addActionItem(nextItem);
quickAction.addActionItem(prevItem);
quickAction.addActionItem(searchItem);
quickAction.addActionItem(infoItem);
quickAction.addActionItem(eraseItem);
quickAction.addActionItem(okItem);
//Set listener for action item clicked
quickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
public void onItemClick(QuickAction source, int pos, int actionId) {
ActionItem actionItem = quickAction.getActionItem(pos);
//here we can filter which action item was clicked with pos or actionId parameter
if (actionId == ID_SEARCH) {
Toast.makeText(getApplicationContext(), "Let's do some search action", Toast.LENGTH_SHORT).show();
} else if (actionId == ID_INFO) {
Toast.makeText(getApplicationContext(), "I have no info this time", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), actionItem.getTitle() + " selected", Toast.LENGTH_SHORT).show();
}
}
});
//set listnener for on dismiss event, this listener will be called only if QuickAction dialog was dismissed
//by clicking the area outside the dialog.
quickAction.setOnDismissListener(new QuickAction.OnDismissListener() {
public void onDismiss() {
Toast.makeText(getApplicationContext(), "Dismissed", Toast.LENGTH_SHORT).show();
}
});
Button books=(Button)findViewById(R.id.book);
books.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent(ExampleActivity.this,List_of_books.class);
startActivityForResult(intent, 0);
}
});
//show on btn1
Button btn1 = (Button) this.findViewById(R.id.menu);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
quickAction.show(v);
}
});
}
}
2.) L'Activité de l'élargissement de l'Assiette de l'Activité
package com.waheguru.app;
import android.app.Activity;
import android.os.Bundle;
public class ABCActivity extends BaseActivityMenu {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
}
}
Donc, quelqu'un peut-il m'aider lorsque je fais quelque chose de mal.
- Vos activités de base est appelé
ExampleActivity
mais votre activité s'étendBaseActivityMenu
. Je pense que vous êtes confus.
Vous devez vous connecter pour publier un commentaire.
Pour cela, vous devez créer un header.xml qui sera inclus dans chaque et chaque mise en page pour vos activités comme suit
header.xml
activity_main.xml
BaseActivity
MainActivity
Vous pouvez mettre autant de vues que vous souhaitez et de gérer les choses communes dans BaseActivity ou BaseListActivity.
Si vous faites une succession d'activités et de vos activités de base des appels setContentView et après que l'activité réelle des appels setContentView le dernier appel sera mis à la disposition de l'activité. Donc, si vous êtes à la recherche d'une solution où toutes les activités ont le même en-tête d'un composant de 2 manières.
Pour chaque activité mise en page xml vous d'inclure cette composante
-Vous faire fonctionner pour baseActivity par exemple setContent(int layout_id)
-Vous l'appelez avec votre activité toujours.
-Baseactivity gonfle une vue de la racine de l'en-tête et gonfle layout_id vue de cette mise en page.
-Alors appelle le réel setContentView avec ce composant.
Je pense que vous devriez l'obtenir à l'aide de
Fragment
, cela peut vous aide.1 - dans
main.xml
, ajouter:2 - le
BaseActivity
qui s'étendFragmentActivity
:3 - Maintenant, vous pouvez étendre votre
Activity
avec leBaseActivity
. Cela permettra à laActivity
être prolongée parFragmentActivity
:Dans le code, vos activités de base est appelé
ExampleActivity
, mais à votre enfant de votre classe de l'extension deBaseActivityMenu
. Ne sais pas d'où sa vient de.Peut-être changer d':
À ceci:
Par ailleurs, je vous suggère de définir vos activités de base (
ExampleActivity
) comme un Résumé classe.Par exemple:
Cela ne peut pas définir votre classe de base comme le béton et le rendra plus facile à corriger en cas de problème.