2016-04-27 14 views
0

Können Sie mir dabei helfen? Ich kann diesen Fehler nicht verstehen! :(UNBEHANDELTE AUSNAHME In Xamarin.Android

Error Message

Aktivität Code:

using System; 
using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 

namespace Phoneword2 
{ 
    [Activity(Label = "Phone Word", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : Activity 
    { 


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

      EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText); 
      Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton); 
      Button callButton = FindViewById<Button>(Resource.Id.CallButton); 

      callButton.Enabled = false; 

      // Add code to translate number 

      string translatedNumber = ""; 

      translateButton.Click += (object sender, EventArgs e) => 
      { 
       // Translate user's alphanumeric phone number to numeric 
       translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text); 
       if (String.IsNullOrWhiteSpace(translatedNumber)) 
       { 
        callButton.Text = "Call"; 
        callButton.Enabled = false; 
       } 
       else 
       { 
        callButton.Text = "Call " + translatedNumber; 
        callButton.Enabled = true; 
       } 
      }; 

      callButton.Click += (object sender, EventArgs e) => 
      { 
       // On "Call" button click, try to dial phone number. 
       var callDialog = new AlertDialog.Builder(this); 
       callDialog.SetMessage("Call " + translatedNumber + "?"); 
       callDialog.SetNeutralButton("Call", delegate { 
        // Create intent to dial phone 
        var callIntent = new Intent(Intent.ActionCall); 
        callIntent.SetData(Android.Net.Uri.Parse("tel:" + 
        translatedNumber)); 
        StartActivity(callIntent); 
       }); 
       callDialog.SetNegativeButton("Cancel", delegate { }); 
       // Show the alert dialog to the user and wait for response. 
       callDialog.Show(); 
      }; 

      // Set our view from the "main" layout resource 
      SetContentView(Resource.Layout.Main); 

      // Get our button from the layout resource, 
      // and attach an event to it 


     } 
    } 
} 

` 

Und das ist main.axml Code:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:text="Enter a Phoneword" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView1" /> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/PhoneNumberText" /> 
    <Button 
     android:text="Translator" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/TranslateButton" /> 
    <Button 
     android:text="Call" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/CallButton" /> 
</LinearLayout> 

Sein enthält zwei Tasten und eine Klartext ... können Sie Klicken Sie auf "Übersetzen", um den Text der Anruftaste zu aktualisieren. Wenn Sie die Anruftaste drücken, rufen Sie die Zielnummer an.

Antwort

0

Sie müssen tatsächlich die letzte Zeile Ihrer OnCreate Methode ihre zweite Zeile machen. Mit anderen Worten, entfernen/schneiden Sie die folgende Codezeile, von wo es

SetContentView(Resource.Layout.Main); 

und fügen Sie ihn direkt nach base.OnCreate (bundle);

Grundsätzlich ist das erste, was Sie direkt nach dem OnCreate der Eltern Aufruf tun müssen, ist zu Sagen Sie der Aktivität, welches Layout verwendet werden soll. Sobald die Aktivität das weiß, kann sie nur dann ein Steuerelement in diesem bestimmten Layout finden.

So Ihre OnCreate Methode wird jetzt:

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

    // Set our view from the "main" layout resource 
    SetContentView(Resource.Layout.Main); 

    EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText); 
    Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton); 
    Button callButton = FindViewById<Button>(Resource.Id.CallButton); 

    callButton.Enabled = false; 

    // Removed code for brevity // 
} 
+0

Bitte das neue Bild sehen. –

+0

@SeyedMiladEmadi - das ist seltsam, da Sie den Fehler in dieser bestimmten Codezeile nicht erhalten sollten. Ich kann zwei Dinge vorschlagen: Reinigen Sie zunächst die Lösung und bauen Sie sie dann neu auf. Zweitens, können Sie ein Beispielprojekt teilen, in dem Sie mit dem Problem konfrontiert sind? Ich kann versuchen, es selbst zu laufen, um weiter hinein zu schauen –

+0

Ich habe das Gefühl, dass die erste Option funktionieren wird, weil der Fehler in dieser bestimmten Zeile keinen Sinn ergibt und die Fehlerzeile sich nicht geändert hat ... in beiden Bildern ist es Zeile 24! Daher sollte das Säubern und Neuaufbau (vielleicht sogar das Neustarten von Visual Studio) funktionieren. Lass es mich wissen –

Verwandte Themen