2012-04-16 8 views
1

Ormliteを使用して永続レイヤーを実装しています。アプリケーションにコードのいくつかの部分で再利用できるボタンが含まれているため、を実装し、OrmLiteBaseActivity<DataBaseHelper>ここで、DataBaseHelperはデータベース操作のための私のヘルパーです。しかし、私がそれをしてDaoにButtonクラスのonClick()メソッド内のオブジェクトを永続化させようとすると、は決して呼ばれなかったと言って、IllegalArgumentExceptionを得る。 SaveButtonクラスで、その後、Ormliteを使用したAndroidプロジェクトのOnClickListenerの実装

saveButton = (Button) findViewById(R.id.SaveProfileButton); 
saveButton.setTag(profile); 
saveButton.setOnClickListener(new SaveButton()); 

をと:私は以下のようにやっているgetHelperを評価する際に

Dao<Profile, Long> profileDao = null; 
Profile profileToSave = null; 

try { 
    profileDao = getHelper().getProfileDao(); 
} catch (SQLException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

エラーが発生します。何か案は? ありがとうございます!

+0

おそらくこのスレッドは助けることができる:http://stackoverflow.com/questions/7702591/alert-dialog-inside-a-setclickonlistener-not-showing – Niloct

+0

はあなたに@Niloctをありがとう、私はdon'ttそのスレッドが私を助けることができます。問題は異なります。 – jpaulo

答えて

1

Activity()クラスをインスタンス化することはできません。システムによって開始されたアクティビティのみを使用できます。そうしないと、コンテキストが正しく設定されません。

あなたがonClickListenerを設定する活動では、あなたが(これを)渡して、そこでのクリックイベントを処理するか、またはあなたが試みることができる必要があります。

EDITED:

saveButton = (Button) findViewById(R.id.SaveProfileButton); 
saveButton.setTag(profile); 
saveButton.setOnClickListener(new SaveButtonListener(this)); 

SaveButtonListener.java:

public class SaveButtonListener extends OnClickListener() { 

    private Activity context; 

    public SaveButton(Activity c) { 
     this.context = c; 
    } 

    @Override 
    public void onClick(...) { 
     ... your logic ... 
     context.doSomething(); 
     context.findViewById(R.id.something); 
    } 
} 
+0

ありがとう! 2番目のアプローチは、savebuttonを別のアクティビティで再利用することができないため、避けようとしていたものです。 OrmliteのgetHelperがIlegalStateを返さないように、SaveButtonコンストラクタでコンテキストを渡す方法の例を教えてください。あなたのヒントを読んだ後に何をやっているのかは、コンストラクタでコンテキストを渡してgetHelperInternal(コンテキスト)を使うが、onClickの中では、name =(EditText)findViewById(R.id.EditTextName)のようなことをする時です。 – jpaulo

+0

申し訳ありません@theelfismike、私はIlegalArgummentを意味しました – jpaulo

+0

リスナを別の場所に含めることができる新しいクラス(.javaファイル)にプルダウンするようにサンプルを更新しました。 – theelfismike

関連する問題