問題解決の実践機会を作る3つの方法
「THINK WINTER 2015」瀧本哲史
スポーツや将棋などの競技者、音楽家、職人などさまざまな「達人」がどのようにスキルを上げているかにいついての研究があるのだが、それによると彼らは、自分が伸ばしたいスキルに合った独自のトレーニングを部分的に取り出し、高負荷にして、かつフィードバックが早くなるよう新たなトレーニング方法として開発しなおして、それを繰り返していることがわかっている。たとえば、将棋における終盤での読みの力を高めるには、たくさん対局するよりも詰将棋をやったほうが効率がよいわけである。 ビジネスパーソンにとっての、トレーニング方法の編み出しカットして、ここに3つの方法を提案したい。「日常生活ケース」「社内ケースライティング」「問題解決サークル」
①「日常生活ケース」 日常で見かけるさまざまなことをすべて問題解決のケースと考えるというものだ。外食に行ったら、そのお店の背損益分岐点や問題点、改善点などを考察し終わるまで食事できない、というルールにする。・・・(略)ソフトバンクの孫さんもよくレストランに入ると部下に試算をチャレンジさせていたという。
②社内ケースランディング ③問題解決サークル
問題解決本を読む時間の何十倍もの実践を
武術の達人とは、武術の技をたくさん知っていて、そrを上手にぶんるいしたり教えたりしている人ではない。その技を使って自分のものにして歴戦を勝ち抜いた人だ。同様に、問題解決のプロというのは、問題解決のメソッドを「使って」実際の多くの問題解決を行った人だ。
Android でポップアップ(popupwindow)表示
ポップアップを試したところエラーが発生。
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? Unable to add window -- token null is not valid; is your activity running?
よくわからんから調べてみると、ポップアップさせようとするタイミングが早過ぎるらしい。ActivityクラスのonCreateイベントの中ではライフサイクル上?早すぎる。
ので解決策は 別スレッドで処理をする必要があるらしく、それが Hundler?クラスってのを使う。
ここはまた調べていかないと。。
以下、エラーが出たコード。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPopupWindow = new PopupWindow(MainActivity.this); //レイアウト設定 View popupView = getLayoutInflater().inflate(R.layout.popup_layout,null); Button btn = (Button)popupView.findViewById(R.id.close_button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mPopupWindow.isShowing()){ mPopupWindow.dismiss(); } } }); try { mPopupWindow.setContentView(popupView); //背景設定 mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.popup_background)); // タップ時に他のViewでキャッチされないための設定 mPopupWindow.setOutsideTouchable(true); mPopupWindow.setFocusable(true); // 表示サイズの設定 float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics()); mPopupWindow.setWindowLayoutMode((int) width, WindowManager.LayoutParams.WRAP_CONTENT); mPopupWindow.setWidth((int) width); mPopupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); mPopupWindow.showAtLocation(findViewById(R.id.close_button), Gravity.CENTER, 0, 0);
onCreateの中でポップアップさせるとエラーが出てたので、ボタンを押下して
ポップアップさせる処理に帰ると上手く動いた。
もうひとつ気がついたこととして、このポップアップを使っているサンプルを見ると、
2つのタイプがある。Activityを継承したクラスと、Viewクラスを継承したクラス。
参考にしてたのは後者で、自分はActivity継承クラスで実装していたので、
エラーが出た。ライフサイクル関連が絡んでくるらしい。
ここらへんの差がもう一つわかってないので勉強が必要。後、別スレッドでの処理ってやつも。
備忘:
Android - PopupWindowで画面内にダイアログ風の表示をする方法 - Qiita
Y.A.M の 雑記帳: Android コードから PopupWindow を生成するときは setBackgroundDrawable() したほうがいいよ