private String[] getCarIDs(String tmp) { String[] IDArray;try { //JSON資料解析JSONObject json_read=new JSONObject(tmp);JSONArray CarIDsJSON = json_read.getJSONArray("CarIDsJSON");IDArray = new String[CarIDsJSON.length()]; for (int i = 0; i < IDArray.length; i++) { IDArray[i] = CarIDsJSON.getString(i);} } catch (JSONException e) { e.printStackTrace();IDArray = new String[0];} return IDArray;} private Runnable threadGetCarIDs = new Runnable() { @Override public void run() { if(httpPostProcess.ReadJSON(httpPostProcess.POST_CarIDs, null)) //從後端抓JSON資料{ if(!httpPostProcess.GetJSONData().equals("")) //有抓到資料{ CarIDsJSONData = httpPostProcess.GetJSONData(); // 取得資料 String[] carIDArry = getCarIDs(CarIDsJSONData);ArrayAdapter<String> IDs;IDs = new ArrayAdapter<String>(LoginActivity.this, android.R.layout.simple_spinner_item, carIDArry); //抓取選單內容sprCarIDs.setAdapter(IDs); //設定選單//handler.sendEmptyMessage(MSG_GET_CAR_IDs);
} } } };
2016年9月6日 星期二
Android spinner選單設定
2016年9月2日 星期五
Android Class間用Content傳Handler
出處
在寫android遊戲或是工具軟體,常常會遇到 View之間 要怎麼切換?
Android.os底下 有一個class 叫 Handler 它能解決這個問題!
Handler能讓 兩個class之間相互傳遞訊息,來寫一段簡單的code可能會比較清楚
例如:
這段程式碼的意思是:
在MainActivity 一開始設定的View 是 ViewTest ,然後,當使用者Touch螢幕,
則讓ViewTest藉由MainActivity的Handler物件,發訊息給MainActivity,讓它切換ViewTest2。
hander.sendEmptyMessage() 這邊是使用只有一個 int 參數的這個method,
隨意傳一個自訂的int數值,讓main class 去判斷,當傳入值數字正確,則main class做動作。
使用Handler 切換View的方法大致上是這樣!
但是有一點千萬要注意,如果是使用SurfaceView的話,則要注意 Thread狀態,Thread必須要讓它在dead 狀況下,
然後,再去切換View,不然程式會出現錯誤。
在寫android遊戲或是工具軟體,常常會遇到 View之間 要怎麼切換?
Android.os底下 有一個class 叫 Handler 它能解決這個問題!
Handler能讓 兩個class之間相互傳遞訊息,來寫一段簡單的code可能會比較清楚
例如:
public class MainActivity extends Activity { ViewTest vt; ViewTest2 vt2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); vt =new ViewTest(this); vt2 =new ViewTest2(this); setContentView(vt); } Handler hander = new Handler() { @Override public void handleMessage(Message msg) { switch(msg.what) { case 1: setContentView(vt2); break; } } } }
public class ViewTest extends View { MainActivity context; Paint p; public GameOverView(MainActivity context) { super(context); this.context = context; p = new Paint(); } public void onDraw(Canvas c) { c.drawText("hello! View",10,10,); } @Override public boolean onTouchEvent(MotionEvent e) { if(e.getAction()= =MotionEvent.ACTION_DOWN) { context.hander.sendEmptyMessage(1); } return true; } }
public class ViewTest2 extends View { 省略...... }
這段程式碼的意思是:
在MainActivity 一開始設定的View 是 ViewTest ,然後,當使用者Touch螢幕,
則讓ViewTest藉由MainActivity的Handler物件,發訊息給MainActivity,讓它切換ViewTest2。
hander.sendEmptyMessage() 這邊是使用只有一個 int 參數的這個method,
隨意傳一個自訂的int數值,讓main class 去判斷,當傳入值數字正確,則main class做動作。
使用Handler 切換View的方法大致上是這樣!
但是有一點千萬要注意,如果是使用SurfaceView的話,則要注意 Thread狀態,Thread必須要讓它在dead 狀況下,
然後,再去切換View,不然程式會出現錯誤。
訂閱:
文章 (Atom)