0

アプリの設定を選択、追加、削除する設定画面があります。他のクラスからオブジェクトを作成する

コンフィグレーションを追加するときに、新しいコンフィグレーションの名前を照会するために、inputBoxクラスの新しいインスタンスを作成します(設定アクティビティクラスを拡張して標準のアンドロイドテキスト入力ボックスのプロシージャを保存した場所)。

この入力ボックスのOnclickでは、新しい構成オブジェクトを作成するために、superClassからのプロシージャ(設定アクティビティ)がコールされます。 このプロシージャは、seekBarの進行状況を含むアクティビティ(たとえば、選択したスピンナ要素)からいくつかのものを照会します。私はNPEを取得する場所

これは、次のとおりです。

java.lang.NullPointerException: Attempt to invoke virtual method'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference 

同じオブジェクトの作成手順は、アプリの初期化時に呼び出されると、うまく動作します。

私は、子クラスからプロシージャを呼び出すときに、画面の対応する要素への変数の参照がもう設定されておらず、したがって照会できないという問題があることを理解しています。

質問:
プロシージャが別のクラスから呼び出されたときに、アクティビティ要素の値をクエリするにはどうすればよいですか?

私はトピックがかなり広いと知っていますが、数日後には分かりません。
おかげさまで、ありがとうございました。ここで

が問題のスキームである:

public class Settings extends AppCompatActivity{ 
Context settingsContext = this; 
private Spinner someSpinner; 
//other elements 
@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 
    someSpinner = (Spinner) findViewById(R.id.someView); 
    //other elements 
    addNewConfig.setOnClickListener((v) --> { 
     inputBox inputBox = new inputBox("OK", "Cancel", settingsContext, "sourcePath",1,1); 
     newConfigName = inputBox.show(); 
    }); 

public sSetting makeNewConfig(String name, String sourcePath, int dataFrom, int dataTo){ 
    sSetting newConfig; 
    newConfig = new sSetting("NAME", someSpinner.getProgress()>0, ...); 
    return newConfig; 
} 
} 

そしてINPUTBOX:問題を解決するため

public final class inputBox extends Settings { 
//someVars 
inputBox(String buttonOk, String buttonCancel, Context setContext, String sourcePath, int dataFrom, int dataTo){ 
    //variable setters 
} 
private String show() { 
     //show msgbox 
     //onclick ok 
     super.makeNewConfig(....); 
} 
+0

の構成要素は、データのみが含まれていません私は設定画面からデータを照会する必要があります(例えば、音楽シークバーをオフ/オンにします:設定オブジェクトにtrueまたはfalseを保存します) –

+0

'設定はAppCompatActivityを拡張します'、 'inputBox extends Settings'、' new inputBox ...) '... **あなたはこれを絶対にしてはいけません** ...いくつかの公式ガイドを読んで、アクティビティやその他のアンドロイドコンポーネントを使って作業する方法を理解してみてください... – Selvin

+0

アクティビティの状態は?これはすべてです低い? –

答えて

0

私は私のプロジェクトを少し再編:
私はInputBoxのパートを削除し、とにかく私が必要としていたものについて、あまりにも複雑な解決策が検討された後、
ただし、設定ビューにeditTextを追加しました。 私はこのために設定ビューを変更しなければならなかったが、今のところよく見えて、ユーザの設定名を編集するのはばかげて簡単だった。

私はほとんどの場合、そのトリックを行うと思います。ポップアップ・ボックスを追加するだけで

私はこれが役に立てば幸い多くのエラー処理を必要とし、より複雑なデザインを作る;)あなたはそれのためのコードが必要な場合 は、それがここにあります: は GitHub - AIM

関連する問題