2015-10-28 19 views
6

ボタンsetTextAppearance(コンテキストコンテキスト、int型の残油)は(残油をint型)ボタンsetTextAppearanceが廃止されました

とsetTextAppearanceを推奨されていません - 23

APIレベルでのみ使用でき、私が代わりに何を使うべきでしょうか?

+0

あなたはどのようなAPIを開発していますか –

+0

あなたの問題は何ですか?新しいAndroidバージョンで古いメソッドを呼び出すと、新しいメソッドが内部的に呼び出されるので、同じ結果が得られます。 – Froyo

答えて

8

廃止されたということは、今後サポートが中止されることがありますが、期待どおりに機能していることを意味します。

if (Build.VERSION.SDK_INT < 23) { 
    yourButton.setTextAppearance(context, resid); 
} else { 
    yourButton.setTextAppearance(resid); 
} 

:新しいsetTextAppearance(int resid)だけあなたが長い時間のために安全になりたい場合は、次のコードを使用することができ、APIレベルで23

をリリースしましたので、古いAPIについて、何の代替は、ありませんこのコードでは、APIレベル23以降の携帯電話では新しいバージョンが優先されますが、APIレベル23で使用できない場合は古いバージョンが使用されます。

8

@Daniel Zolnaiと同じことを言うつもりです。しかし、あなたのコード内のすべての場所にチェックBuild.VERSION>SDK_INT < 23をしないでください。これを1か所に入れておくと、将来これを削除したり、変更したりすることは容易になります。だからそれを行う方法?私はyourButtonのケースでこれを行います。

  1. Buttonか、単にそのようなアンドロイドが提供する他のビューを使用しないでください。私はこれを言う、なぜなら将来的に何かを微調整する必要があるから、あなた自身のMyButtonかそのようなものを持つ方がよいからです。したがって、MyButtonを拡張Buttonに作成してください。

  2. MyButtonの内部では、以下のコードを置く:

    public void setTextAppearance(Context context, int resId) { 
        if (Build.VERSION.SDK_INT < 23) { 
         super.setTextAppearance(context, resId); 
        } else { 
         super.setTextAppearance(resId); 
        } 
    } 
    


あなたは常にBUILDバージョンのチェックを心配することなく、setTextAppearanceを使用することができますこの方法です。将来的にこのすべてのものを削除する予定がある場合は、refactorを1か所に置かなければなりません。これは少しの作業ですが、長期的には、これは多くの助けとなるでしょう。maintananceの悪夢を減らします。

+0

'TextView.setTextAppearance(int resId)'もシステムから呼び出されることはないので、 'super..'をダブルコールすることができますか? –

+0

はい。 API <23のみが 'setTextAppearance(int resId)'を呼び出します。 'super'へのダブルコールはありません。 – Henry

+0

あなたはAPI> = 23をコールする* 'STA(int)'と* only * API <23は 'STA(context、int)'を呼び出しますか? :)システムはいつこれらのメソッドを呼び出しますか? –

関連する問題