質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

1967閲覧

ActiveAndroidのnullについて

TakamasaAwai

総合スコア73

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/03/12 03:21

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.activeandroid.TableInfo.getIdName()' on a null object reference
が出ます。
Tableを設定しているクラスは

lang

1import com.activeandroid.Model; 2import com.activeandroid.annotation.Column; 3import com.activeandroid.annotation.Table; 4 5@Table(name = "memo_table") 6public class MemoDB extends Model{ 7 @Column (name = "title") 8 public String title; 9 10 @Column (name = "memo") 11 public String memo; 12 13 @Column (name = "date") 14 public String date; 15 16 @Override 17 public String toString(){ 18 return title; 19 } 20}

これを使っているクラスは、

lang

1public class MemoCreateActivity extends AppCompatActivity { 2 3 MemoDB mMemoDB = new MemoDB(); 4 EditText mTitle; 5 EditText mMemo; 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_memo_create); 10 11 mTitle = (EditText)findViewById(R.id.create_title); 12 mMemo = (EditText)findViewById(R.id.create_memo); 13 } 14 @Override 15 public boolean onCreateOptionsMenu(Menu menu) { 16 getMenuInflater().inflate(R.menu.menu_memo_create, menu); 17 return true; 18 } 19 @Override 20 public boolean onOptionsItemSelected(MenuItem item) { 21 // Handle action bar item clicks here. The action bar will 22 // automatically handle clicks on the Home/Up button, so long 23 // as you specify a parent activity in AndroidManifest.xml. 24 int id = item.getItemId(); 25 26 //noinspection SimplifiableIfStatement 27 if (id == R.id.create_save) { 28 saveMemo(); 29 finish(); 30 return true; 31 } 32 return super.onOptionsItemSelected(item); 33 } 34 void saveMemo(){ 35 mMemoDB.title = mTitle.getText().toString(); 36 mMemoDB.memo = mMemo.getText().toString(); 37 Date date = new Date(); 38 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.JAPANESE); 39 mMemoDB.date = sdf.format(date); 40 mMemoDB.save(); 41 } 42} 43

です。どこがおかしいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

いろいろ調べた結果、ActiveAndroidを利用したプログラムの様なので、
下記サイトを参考にライブラリ設定し、質問者様のソースをそのままコピーし、
不足していたXMLなどは自分で補完して実行してみました。
iPhone, Android アプリ開発:[Android] データベースを簡単にするライブラリ ActiveAndroid

実行した結果、エラーにならず、ソースでの設定通りActivityが閉じられます。

java

1 2 int id = item.getItemId(); // エラーにならない 3 4 //noinspection SimplifiableIfStatement 5 if (id == R.id.create_save) { 6 saveMemo(); 7 finish(); // ここまで実行され、Activityが終了される 8 return true; 9 }

先に紹介したリンク先ではデーブル情報をAndroidManifest.xmlに記述すことになっていますが、
それは忘れずに記述されましたでしょうか?

xml

1 <application 2 中略 3 > 4 <meta-data 5 android:name="AA_DB_NAME" 6 android:value="test.db" 7 /> 8 <meta-data 9 android:name="DB_VERSION" 10 android:value="1" 11 /> 12 <!-- 中略 --> 13 </application> 14

以上、
ご参考になりますでしょうか?

投稿2016/03/12 15:52

Aeona

総合スコア396

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問