私は引き上げることができるスライダーを持っています、そしてそれはそれから地図を示します。スライダーを上下に動かして地図を隠したり表示したりできます。地図が前面に表示されたら、その地図上でタッチイベントを処理できます。触れるたびにAsyncTask
が起動し、データをダウンロードしてそのデータを表示するToast
を作成します。タッチイベントでタスクを開始してもトーストが表示されませんが、スライダーを閉じるまではそうではありません。スライダーが閉じられてマップが表示されなくなると、Toast
が表示されます。
何か案は?
よくタスクを始めなさい
編集:
public boolean onTouchEvent(MotionEvent event, MapView mapView){
if (event.getAction() == 1) {
new TestTask(this).execute();
return true;
}else{
return false;
}
}
そしてonPostExecute
で乾杯する
Toast.makeText(app.getBaseContext(),(String)data.result,
Toast.LENGTH_SHORT).show();
新しいTestTask(this)
では、これはMapOverlay
ではなくMapActivity
への参照であるため、これが問題でした。
あなたのアプリケーションで Toast を表示するためには、これを試してください。
Toast.makeText(getActivity(), (String)data.result,
Toast.LENGTH_LONG).show();
もう一つの例:
Toast.makeText(getActivity(), "This is my Toast message!",
Toast.LENGTH_LONG).show();
Durationには2つの定数を定義できます。
int LENGTH_LONG 長期間にわたってビューまたはテキスト通知を表示します。
int LENGTH_SHORT ビューまたはテキストの通知を短時間表示します。
LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();
baseadapter
を使ったアクティビティの拡張はこれを使いました
Toast.makeText(getActivity(),
"Your Message", Toast.LENGTH_LONG).show();
あるいはあなたがアクティビティやmainactivity
を使っている場合
Toast.makeText(MainActivity.this,
"Your Message", Toast.LENGTH_LONG).show();
Toast.makeText(context, text, duration);
getApplicationContext()
- アプリケーションで実行されているすべてのアクティビティのコンテキストを返します。
getBaseContext()
- アプリケーション内の別のコンテキストからContextにアクセスしたい場合は、アクセスできます。
getContext()
- コンテキストビューを現在実行中のアクティビティのみで返します。
text
- "STRING"を返します。文字列でない場合は、型キャストを使用できます。
(string)num // type caste
Toast.LENGTH_SHORT
- トースト遅延2000ミリ秒を事前定義
Toast.LENGTH_LONG
- 事前定義されたトースト遅延3500ミリ秒
milisecond
- トースト遅延ユーザー定義ミリ秒(例:4000)
例1
Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();
例2
Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Androidで乾杯する
Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();
または
Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();
(LENGTH_SHORTとLENGTH_LONGはブール値のフラグとして機能しています - つまりトーストタイマーをミリ秒に送ることはできませんが、これら2つのオプションのどちらかを使用する必要があります)
あなたのトーストをカスタマイズすることができます:
LayoutInflater mInflater=LayoutInflater.from(this);
View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
または一般的な方法:
Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
私はいくつかのトーストを試してみましたそして彼らのトーストがそれらにエラーを与えている人のために
Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
それには2つの方法があります。
作り付けのToastメッセージを使う
//Toast shown for short period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();
//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();
またはカスタムレイアウトファイルを提供することによってカスタムのものを作る
Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
私はここで答えに遭遇しました、そして、アクティビティコンテキストが必要であると信じて、誰かがあざけっているように思われるという事実に引き付けられました。これはそうではありません。ただし、ToastがメインイベントまたはUIスレッドから投稿されることが要件です。したがって、これをアクティビティのコンテキスト外で機能させるのは少しややこしい作業です。これはシステムサービスの内部で、あるいは最終的にContext
から継承するクラスの可能性があるクラスの内部で動作する例です。
public class MyService extends AccessibilityService {
public void postToastMessage(final String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}
});
}
}
これが機能するためにActivity
のインスタンスにアクセスする必要はないことに注意してください。これが事実であることを示唆しないでください! Activity
が必要な場合、メソッドシグネチャはContext
を要求しません。
それがフラグメントなら、
Toast.makeText(getActivity(), "this is my Toast message!!! =)",
Toast.LENGTH_LONG).show();
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();
「app.getBaseContext()」を使用する代わりに。
" getApplicationContext() "や " getContext() "を使ってみることができます。
あなたのコードが活動しているなら、あなたは "Activty.this"の "this"を使うべきです。
あなたのコードが断片化しているなら、あなたは "getActivity()"に行くべきです
Toastを表示するには、次のコードを使用します。
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
toast.setDuration(10000);//you can even use milliseconds to display toast
toast.show();**//showing the toast is important**
toast("Your Message")
OR
toast(R.string.some_message)
BaseActivity
に2つのメソッドを追加するだけです。まだ使用していない場合は、新しいBaseActivity
を作成します。
public class BaseActivity extends AppCompatActivity {
public void toast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
public void toast(@StringRes int msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
そしてすべての活動をBaseActivity
で拡張してください。
public class MainActivity extends BaseActivity
構文
Toast.makeText(context, text, duration);
getApplicationContext() または getActivity() または MainActivity.this を使用できます(アクティビティ名がMainActivityの場合)。
Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();
または
Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();
最も簡単な方法です。 (メインアクティビティに表示するには、他のアクティビティの最初の引数を置き換えます)
Button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
}
}
これは私のために働いた:
Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();
これは別のものです:
refreshBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
}
});
Toast
は次のとおりです。
Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
&strings.xml
:
<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>
あなたの活動の中で簡単な乾杯を作りたいのなら:Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();
1. ToastでTextViewを表示する---
TextView tv = new TextView(this);
tv.setText("Hello!");
tv.setTextSize(30);
tv.setTextColor(Color.RED);
tv.setBackgroundColor(Color.YELLOW);
トーストとして2.Showing画像: -
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.blonde);
Toast t = new Toast(this);
t.setView(iv);
t.setDuration(Toast.LENGTH_LONG);
t.show();
トーストとして3.showingレイアウト: -
LayoutInflater li = getLayoutInflater();
View view = li.inflate(R.layout.my_toast_layout,null,false);
Toast t = new Toast(this);
t.setView(view);
t.setDuration(Toast.LENGTH_LONG);
t.show();
**あなたのAsyncにトーストを書きたいのであれば:private Activity activity;
private Android.content.Context context;
this.activity = activity;
this.context = context;
Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();
public class ServiceA extends Service {
//....
public void showToast(final String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
}
});
}
//....
}
ApplicationクラスにshowToast
メソッドを入れて、どこからでも乾杯を見せることができます。