2017-07-15 1 views
2

Meine App funktionierte gut. Plötzlich wurde mir klar, dass ich diesen Fehler erhalte, wenn ich mich über Facebook anmelde und abmelde. Wenn ich mich in meiner App über Faceboook anmelde, authentifiziert es sich von der Facebook-Anmeldeseite auf eine Seite mit Erfolgsseiten.Typ Parametername: Der Typ wird nicht von einem Java-Typ abgeleitet. - Xamarin android

Auf der Erfolgsseite, klickt der Benutzer auf weiter, wenn ich auf die weiter klicken, erhalte ich die Fehler

Typ Parametername: Der Typ ist nicht von einem Java-Typ abgeleitet. .

Die App stürzt ab und startet neu, nachdem ich sehe, dass der Benutzer angemeldet ist Wenn ich zu abzumelden, um es den gleichen Fehler

Typ Parametername: Der Typ ist nicht abgeleitet von einem Java-Typ.

Die App stürzt ab, aber der Benutzer ist ausgeloggt. Ich habe nach anderen Fragen gesucht, aber keine konnte mir helfen.

Was verursacht das?

public class successPage : Activity 

    { 
     Button button; 
     TextView textViewActivity; 
     FirebaseAuth mAuth; 

     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 


      SetContentView(Resource.Layout.successPage); 

      button = (Button)FindViewById(Resource.Id.button); 

      textViewActivity = (TextView)FindViewById(Resource.Id.textView); 

      mAuth = FirebaseAuth.Instance; 



      button.Click += onBtnClick; 

      //textViewActivity.Text = user.DisplayName; 



      // Create your application here 
     } 

     private void onBtnClick(object sender, EventArgs e) 
     { 
      Intent success = new Intent(this, (typeof(EventNews))); 
      StartActivity(success); 
     } 
    } 

Die Fehlerpunkte in dieser Zeile

Intent success = new Intent(this, (typeof(EventNews))); 

Eventnews

public class EventNews : BaseActivity, IValueEventListener 
    { 

     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 


      FrameLayout content = (FrameLayout)FindViewById(Resource.Id.content_frame); 
      LayoutInflater.Inflate(Resource.Layout.EventNews, content); 



      //initializing firebase 
      user = FirebaseAuth.Instance.CurrentUser; 


      toolbarMain = (Android.Support.V7.Widget.Toolbar)FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolBar); 

      SetSupportActionBar(toolbarMain); 

      TextView toolbarName = (TextView)FindViewById(Resource.Id.counter_text); 

     } 

     } 

     public override bool OnCreateOptionsMenu(IMenu menu) 
     { 

      MenuInflater.Inflate(Resource.Menu.top_menus, menu); 

      var item = menu.FindItem(Resource.Id.search); 

      var searchview = (Android.Support.V7.Widget.SearchView)MenuItemCompat.GetActionView(item); 

      searchview.QueryTextChange += (s, e) => 
      { 

       adapter.Filter.InvokeFilter(e.NewText); 



      }; 

      searchview.QueryTextSubmit += (s, e) => 

      { 

       Toast.MakeText(this, "Searched for: " + e.Query, ToastLength.Short).Show(); 
       e.Handled = true; 
      }; 

      MenuItemCompat.SetOnActionExpandListener(item, new SearchViewExpandListener(adapter)); 




      return base.OnCreateOptionsMenu(menu); 

     } 

     private void Adapter_ItemClick(object sender, int position) 
     { 


     } 

     private class SearchViewExpandListener : Java.Lang.Object, MenuItemCompat.IOnActionExpandListener 
     { 
      private readonly IFilterable _adapter; 

      public SearchViewExpandListener(IFilterable adapter) 
      { 
       _adapter = adapter; 

      } 
      public bool OnMenuItemActionCollapse(IMenuItem item) 
      { 
       _adapter.Filter.InvokeFilter(""); 
       return true; 
      } 

      public bool OnMenuItemActionExpand(IMenuItem item) 
      { 
       return true; 
      } 
     } 

     public void OnCancelled(DatabaseError error) 
     { 
      throw new NotImplementedException(); 
     } 

     public void OnDataChange(DataSnapshot snapshot) 
     { 

      eventNews.Clear(); 
      var items = snapshot.Children.ToEnumerable<DataSnapshot>(); 

      HashMap map; 
      foreach (DataSnapshot item in items) 
      { 
       map = (HashMap)item.Value; 

       eventNews.Add(new EventNews(item.Key.ToString(),map.Get("Name")?.ToString(), map.Get("Achievement")?.ToString(),map.Get("History")?.ToString(),map.Get("Quote")?.ToString(), map.Get("Ref").ToString())); 
      } 

      //list items on listview 
      rv.SetLayoutManager(new LinearLayoutManager(this)); 
      rv.SetItemAnimator(new DefaultItemAnimator()); 
      rv.SetAdapter(adapter); 
      mDialog.Dismiss(); 


     } 
    } 

Stacktrace

at Java.Lang.Class.FromType (System.Type type) [0x00012] in <d855bac285f44dda8a0d8510b679b1e2>:0 
    at Android.Content.Intent..ctor (Android.Content.Context packageContext, System.Type type) [0x00000] in <d855bac285f44dda8a0d8510b679b1e2>:0 
    at peaceApp.Droid.successPage.onBtnClick (System.Object sender, System.EventArgs e) [0x00002] in /Users/emmnock/Documents/Projects/peaceApp/Droid/successPage.cs:76 
    at Android.Views.View+IOnClickListenerImplementor.OnClick (Android.Views.View v) [0x00011] in <d855bac285f44dda8a0d8510b679b1e2>:0 
    at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x0000f] in <d855bac285f44dda8a0d8510b679b1e2>:0 
    at (wrapper dynamic-method) System.Object:579ed970-959a-4157-8d2c-b00f36f55fa7 (intptr,intptr,intptr) 
+0

Der Fehler zeigt auf diese Zeile 'Intent Erfolg = neue Absicht (this, (typeof (EventNews)));' – Switz

+0

Können Sie hinzufügen, was die 'EventNews' ist? –

+2

Der zweite Parameter erwartet eine Klasse, die ich denke, nicht ein Typ. –

Antwort

0

Wenn Sie diese Dokumentation überprüft haben Passing Data Between Activities

Dann können Sie diese Zeile bemerkt haben werden:

eine zweite Aktivitätsklasse hinzufügen Activity2 das Projekt benannt. Diese Klasse muss von Android.App.Activity erben.

So ist das Problem in typeof(EventNews). Aus irgendeinem Grund wird als Typ nicht die Art Ihrer Aktivität übergeben. Dies kann der Fall sein, wenn Sie zwei Klassen mit demselben Namen aber unterschiedlichen Namespaces haben.

+0

Ich verstehe nicht wirklich das sowieso. Weil ich etwa 4 andere Aktivitäten in meiner App geerbt BaseActivity und ich bin in der Lage, Daten zwischen Aktivitäten übergeben. Die Basisaktivität erbt von AppCompatActivity. Dort stelle ich meine Nav-Schublade und Symbolleiste ein. – Switz

Verwandte Themen