0

最近、作成したアプリのiOSバージョンを更新しましたが、同じ機能をAndroidバージョンに追加したいと思います。基本的には、ユーザーがリストから選択した年を入力し、その前の年を指定したテキストフィールドのプレースホルダーテキストに入力します。Androidで同じ機能を実行する方法を調べたところ、OnItemSelectedListenerが必要であることがわかりました。しかし、それはトラブルが発生するときです。必要なコードを追加し、AdapterViewをアクティビティにインポートした後、最初の起動時にアプリがクラッシュし続けます。どこでクラッシュし続けるのかわからないので、ここに私のアプリのgithubページへのリンクがあります

Github実験ブランチ

マスターブランチのコードは正常に機能するので、これは本当に奇妙です。

ファイルを解読するのは難しいので、OnItemSelectedListenerを適用するために使用したコードは次のとおりです。

// give Spinner a listener for new functionality to work
selection.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parentView, 
                               View selectedItemView, int position, long id) {
        // get year selection for use with new functionality
        int iyear = Integer.parseInt(selection.getSelectedItem().toString()); 
        balance.setHint(R.string.balance + " from 12/31/" + pyear.getPrevYear(iyear)); 
    }
    // create empty method
    public void onNothingSelected(AdapterView<?> parentView) {}
});
4

3 に答える 3

0

setHintの時点でvarバランスがnullでないことを確認してください。findViewByIdのIDが正しくない可能性があります。R.id.amountがR.layout.main内のビューであることを確認してください。

于 2012-08-22T21:42:15.463 に答える
0

エラーを追跡するときに最も重要な情報であるLogCatがまだ表示されません...

だからこれらは私の推測です:

  • アダプターをどこで定義するかわからないselectionので、XMLでこれを行うと思います。selection.getSelectedItem().toString()それがの有効な文字列であることを確認しましたInteger.parseInt()か?

    配列にアクセスできる場合(それを呼び出すselectionArray)、単純に次を使用できます。

    ... + pyear.getPrevYear(selectionArray[position]);
    
  • R.string.balance必要な文字列を参照する整数です。使用したい文字列自体を表示するには、getString(R.string.balance)またはおそらくgetResources().getString(R.string.balance)

  • 変数がnullでないことを確認します:selection、、、。balancepyear

最初のポイントをもう少し説明するには:

  1. 配列と文字列のクラス変数を作成します。

    int[] choicesArray;
    
  2. onCreate();で初期化します。

    choicesArray = getResources().getIntArray(R.array.choices_array);
    
  3. OnItemSelectedListenerで使用:

    balance.setHint(getResources().getString(R.string.balance) + " from 12/31/" + (choicesArray[position] - 1)); 
    
于 2012-08-22T21:50:58.203 に答える
0

私はマスターブランチから物事を調べてコピーしました、そして物事はクラッシュすることなく働き始めました。現在、ヒントに問題がありますが、なぜクラッシュし続けたのかというこの質問のため、質問を開いたままにしておくことができるかどうかわかりません。

于 2012-08-24T15:48:18.320 に答える