3

私は MyPrimaryClass という名前のクラスを持っています。このクラスには、押されたときにボタンの魔女があり、クラス myClassForResult でインテントを作成します。

これを使用して開始します:

startActivityForResult(myIntentOfMyClassForResult, ACTIVITY_EDIT_BTEXT);

MyPrimaryClass と myClassForResult はどちらも Activity を拡張します。

そのため、R.string.my_resource_string の text パラメーターを指定して myClassForResult 内で Toast.makeText を呼び出すと、強制的に閉じることができます。

私はこれを試しました:

Context c = myClassForResult.this;
Toast toast = Toast.makeText(c,
    c.getResources().getString(R.string.my_resource_string),
    Toast.LENGTH_SHORT);
toast.show();

これも:c = getApplicationContext()

これも:c = getBaseContext()

これも:

Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
    R.string.my_resource_string,
    Toast.LENGTH_SHORT);
toast.show();

"My toast Text!" のようなインライン文字列を使用すると、機能します。しかし、リソースから文字列を取得する必要があります。

-問題が解決しました:

問題を解決するために、トーストの期間を Toast.LENGTH_LONG に変更しました

文字列R.string.my_resource_stringの値は「The title is empty」です

その値を「The title」に変更すると、正しく機能したため、文字列が Toast.LENGTH_SHORT の長さに対して長すぎたと思います。

しかし、期間をToast.LENGTH_LONGに変更すると、長い文字列を使用できます。

Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
    R.string.my_resource_string,
    Toast.LENGTH_LONG);
toast.show();
4

4 に答える 4

3

試す:

Toast.makeText(this, this.getString(R.string.my_resource_string), Toast.LENGTH_SHORT);
于 2012-02-05T20:30:32.837 に答える
2

@dilipkaklotar 正しく回答されましたが、いくつかの変更を行う必要があります。

これが私にとってどのように機能したかです

Toast.makeText(getApplicationContext(),
getApplicationContext().getResources().getString(R.string.message),
Toast.LENGTH_SHORT).show();

getResources には括弧 () がありません。最後に .show(); です。toShow() ではありません。

しかし、それは正しいです。どうもありがとうございました。

于 2015-11-02T03:44:36.683 に答える
2

注意すべき点:

Toast toast = Toast.makeText(c,
    c.getResources().getString(R.string.my_resource_string),
    Toast.LENGTH_SHORT);
toast.show();

次のように簡略化できます。

Toast.makeText(c,
    c.getResources().getString(R.string.my_resource_string),
    Toast.LENGTH_SHORT).show();

これにより、不要なオブジェクト参照が節約されます。

理解する必要があることの 1 つは、パッケージで R を参照するときはいつでも (android.R. ではない)、Context がある限りリソースにアクセスできることです。

アップデート

これを何に使用しているかを理解した後、アプローチを変更することをお勧めしますが、これは実際には可能ですが、あなたのアプローチはそれほど単純なものには理想的ではありません。

通常、メソッド startActivityForResult(xx) は、結果のためにパッケージの外部にあるアプリケーションを開始する場合に使用します。

たとえば、製品からバーコードを取得したい場合は、アクションを介して間接的にそのバーコード クラスへのインテントを開始します。次に、onActivityResult(xx) を使用してデータを取得します。

自分のクラスでこれを行うのは意味がありません。

于 2012-02-05T20:35:08.887 に答える
0
Toast.makeText(getApplicationContext(), getApplicationContext().getResources.getString(R.string.imgval), Toast.LENGTH_SHORT).toShow();
于 2012-02-06T05:58:09.103 に答える