2016-11-08 17 views
0

私はモバイル開発が初めてです。私はxamarinvisual studio 2015に使ってアンドロイドに取り組んでいます。私はこれに従いますsample code。私は自分のデバイスに自分のアプリケーションを配備していて、うまく動作しています。私は基本的に私はupdate layout最初にそれで更新ボタンをクリックすると、機能のすべてが良いが、更新時に実行されている Xamarin android System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません

を削除する機能

  1. 挿入
  2. 表示
  3. 更新
  4. を以下していますDB(SQLITE)からすべてのデータを取得し、Edit Text Boxesに表示します。サンプルコードでは、updateEmployee.csコードが表示されます。怒鳴るエラーに

    enter image description here

    を取得イムを更新している間、私はdNamedEmailなどを宣言した上名前がnameフィールド

    でありながら、私はdNameにnull値を取得していますので、同様

    TextView dName, dEmail, dPhone, dDesignation; 
        String name, email, phone, designation; 
    
    を怒鳴ります

    また、initializeの方法では、私もnull値を取得しており、eNameなどini

    ベローiは名前フィールドがあり、この例外に

    void List_ItemClick(object sender, AdapterView.ItemClickEventArgs e) 
        { 
         click_Employee = e.Position + 1; 
         ICursor c = dbHelper.getSingleEntry(click_Employee); 
         c.MoveToFirst(); 
         name = c.GetString(c.GetColumnIndex(dbHelper.EMPLOYEE_NAME)); 
         email = c.GetString(c.GetColumnIndex(dbHelper.EMPLOYEE_EMAIL)); 
         phone = c.GetString(c.GetColumnIndex(dbHelper.EMPLOYEE_PHONE)); 
         designation = c.GetString(c.GetColumnIndex(dbHelper.EMPLOYEE_DESIGNATION)); 
         dName.Text = name; 
         dEmail.Text = email; 
         dPhone.Text = phone; 
         dDesignation.Text = designation; 
        } 
    

    を取得していているコードです:tializeは、そのAXMLアップデート1

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="10dp"> 
    <ScrollView 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 
        <LinearLayout 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:orientation="vertical"> 
         <ListView 
          android:id="@+id/listView1" 
          android:layout_width="match_parent" 
          android:layout_height="350dp" 
          android:divider="#000" 
          android:dividerHeight="1dp" /> 
         <TextView 
          android:id="@+id/eName" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Name" /> 
         <TextView 
          android:id="@+id/eEmail" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Email" /> 
         <TextView 
          android:id="@+id/ePhone" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Phone" /> 
         <TextView 
          android:id="@+id/eDesignation" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Designation" /> 
        </LinearLayout></ScrollView></LinearLayout> 
    

    を次のようにあるidcomplete_dataでレイアウトですstringにあり、上記のコードに示すように、この文字列を私の編集テキストdNameなどに割り当てています。 dName.text = nameには、null例外がありますが、名前フィールドには名前が含まれています。それを行う他の方法はありますか?

    私は何が欠けているのか分かりません。どんな助けも高く評価されます

+0

なぜ、AxmlにTextViewsがありますが、コードでEditTextsを使用するのですか?スターターで同時に使用してください –

+0

@OlegBogdanovのデータは完全なデータレイアウトから来ています。このレイアウトではデータビューのみが利用できますデータの更新中にレイアウト編集テキストが使用されるので、選択されたレコード(complete_dataから来る)を編集テキストに配置して編集することができます。だからこそ私はコード内でテキストを編集したのです –

+0

さて、コードの間違った部分を貼り付けたか、コードが間違っていますか?あなたのXMLファイルでTextView要素を表示していて、初期化メソッドでenameをEditTextにキャストしようとしていますが、それは動作していないはずです。あなたが初期化する場所とそれに依存する正確なaxmlを表示してください。 –

答えて

1

FindViewByIdが呼び出されないか、実際にはdnameを割り当てられないということが、この問題の最も一般的な原因です。

これが持つことができる複数の原因:

あなた initializeメソッドが呼び出されることはありません
  1. それが呼ばれるが、XMLを使用して TextViewとコードでを持っているので、ビューを割り当てること失敗し List_ItemClick
  2. 後に呼び出され
  3. タイプはEditText

2つのブレークポイントを設定します。1つはList_ItemClickであり、1つはinitializeです。どちらが最初に呼び出されたかを確認します。 initializeを実行して、ビューが見つかって割り当てられていることを確認します。

+0

'initialize'が最初に呼び出されますが、値を代入していないので、最初の実行時にはテキストボックス(編集テキスト)が' update'レイアウトで空であるため、明白です。レコードを選択した後にレコードを選択する必要があります。そのレコードのデータを表示する必要があります。データを編集できるようにしてください。http://www.androidcodec.com/wp-content/uploads/2016/08 /Screenshot_2016-08-15-01-44-24-horz.png –

+0

多分私はあなたが望むものを誤解しているかもしれませんが、編集テキストにテキストがあるかどうかという質問は、それがなぜそうでないのかとはまったく関係ありません'FindViewById'にあります。 –

+0

このリンクをよくご覧ください。私はサンプルコードとして次のとおりです。http://www.androidcodec.com/xamarin-sqlite-database-example-android/ これはより正確に理解するのに役立ちます –

関連する問題

 関連する問題