L'activité n'est pas affectée à Android.app.L'activité Manifeste XML
Je vais avoir quelques problèmes avec le fragment dans Android Studio. Donc, fondamentalement, c'est mon MainActivity:
public class MainActivity extends FragmentActivity {
final Context context = this;
ViewPager Tab;
TabPagerAdapter TabAdapter;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
Tab = (ViewPager) findViewById(R.id.pager);
Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position);
}
});
Tab.setAdapter(TabAdapter);
actionBar = getActionBar();
//Enable Tabs on Action Bar
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabReselected(android.app.ActionBar.Tab tab,
android.app.FragmentTransaction ft) {
}
@Override
public void onTabSelected(android.app.ActionBar.Tab tab,
android.app.FragmentTransaction ft) {
//on tab selected show respected fragment view
Tab.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(android.app.ActionBar.Tab tab,
android.app.FragmentTransaction ft) {
}
};
//Add New Tab
actionBar.addTab(actionBar.newTab().setText("Feedback")
.setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("History Log")
.setTabListener(tabListener));
}
}
Et puis mon autre classe qui est l'un de l'onglet code:
public class FeedbackMain extends Fragment {
View feedbackMainView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
feedbackMainView = inflater.inflate(R.layout.activity_feedback_main,
container, false);
return feedbackMainView;
}
}
Et puis mon Manifeste:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".FeedbackMain"
android:label="@string/title_activity_feedback_main" >
</activity>
Cependant, je reçois des lignes rouges .FeedbackMain et le message d'erreur est:
.FeedbackMain is not assignable to 'android.app.Activity'
Je me demandais pourquoi est-il si? Ça marchait très bien avec Android outils de développement, mais alors quand je suis passé à Android Studio, ce qui se passe.
Merci d'avance.
Modifier
fichier xml pour mainActivity:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
style.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
OriginalL'auteur hyperfkcb | 2015-05-27
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous avez seulement déclarer les activités dans le fichier de manifeste, pas de fragments.
Afin de supprimer cette ligne du fichier manifeste
D'autre part, si vous souhaitez utiliser actionbar, vous classe doit étendre ActionBarActivity pas FragmentActivity. afin de changer votre mainactivity de
à
alors assurez-vous que vous appelez
getSupportActionBar()
si vous utilisez la bibliothèqueEDIT:
Je dois enlever le Remplacer comme il y a quelques rouge de la ligne mise en évidence sous
êtes-vous à l'aide de supprort bibliothèque?
Désolé, mais comment puis-je vérifier? Est-il une vertu gradle? dépendances { compiler fileTree(dir: 'libs', comprend: ['*.pot']) compiler 'com.android.support:appcompat-v7:22.0.0' }
oui, avez-vous les importer dans votre activité? import android.de soutien.v7.app.ActionBar; import android.de soutien.v7.app.ActionBar.Onglet;
OriginalL'auteur Durga Mohan
cette erreur est dû au fait que
FeedBackMain
est déclarée commeActivity
pas comme unFragment
si vous voulez vraiment l'utiliser comme
Activity
Changementà
mais si vous voulez l'utiliser comme
Fragment
il suffit de supprimer la déclaration à l'intérieur de votreAndroidManifest.xml
utilisation
actionBar = getSupportActionBar();
au lieu degetActionBar()
Vous avez besoin de quelques implémentations de méthode:
ok Denise vous voulez l'utiliser comme un fragment de supprimer la déclaration à l'intérieur de la AndroidManifest.xml et extension de conserver comme un Fragment.
Ouais j'ai supprimé déjà, mais alors il me donne un message d'erreur d'exception de pointeur null à l'actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
c'est un autre problème, dans MainActivity ajouter import android.de soutien.v7.app.ActionBarActivity; et s'étendent de ActionBarActivity : public class MainActivity extends ActionBarActivity { l'utilisation de "actionBar = getSupportActionBar();" au lieu de getActionBar()
Après je l'ai changé il y a un autre message d'erreur à l'ActionBar.TabListener. Le message d'erreur de la Classe la classe anonyme dérivée de TabListener doit être déclaré abstrct
OriginalL'auteur Elenasys
Supprimer
à partir de votre fichier Manifeste. Depuis FeebackMain est un Fragment et non une Activité, vous n'avez pas besoin de le définir à l'intérieur de votre Manifeste.
À l'intérieur de laquelle le fichier avez-vous l'erreur?
MainActivity.java
Ajouter
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
avantsetContentView(R.layout.activity_main)
à l'intérieur de votre MainActivity.java et voir si cela fonctionne.Non, il ne fonctionne pas. - Il encore crashs
OriginalL'auteur Bidhan A
FeedbackMain
est unFragment
, pas unActivity
. Vous n'avez pas à les déclarer dans votre fichier Manifeste. Je ne sais pas pourquoi ce comportement a changé quand vous êtes passé à Android Studio, mais qu'est ce que c'est de se plaindre.Donc
actionBar
est null, ce qui signifiegetActionBar()
renvoie la valeur null. Pouvez-vous ajouter la mise en page fichier xml de votre fragment et de l'activité de votre poste?J'ai édité le post déjà. Fondamentalement, le fragment de la mise en page est juste linéaire de la mise en page avec beaucoup de textview
Checkout ceci tutoriel sur la configuration de l'
ActionBar
. Votre activité a besoin d'étendreActionBarActivity
, par exemple. Ce tutoriel (et les prochaines étapes) devrait vous aider.Ok, mais est-il un autre moyen de résoudre ce problème si je voulais rester avec mon code?
OriginalL'auteur AlexWalterbos