編輯:關於Android編程
.getWindow().setContentView(layout)來加載layout。這是默認情況下隱藏軟鍵盤的方法,要重新顯示軟鍵盤,要執行下面這段代碼:
alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
.setView(layout)就可以
先後順序:
setView(layout), show(), getWindow()/getWindow().setContentView(layout)
在調用show方法前先調用setView(layout),show後再調用window.setContentView(layout),兩個Layout布局應該是相同的。
至於原因,暫時不明,但是確實解決了問題,在EditText上點擊,可以調出軟鍵盤,輸入法了。
例子:
LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.alert_input, null); AlertDialog dlg = new AlertDialog.Builder(context).create(); dlg.setView(v); dlg.show(); Window window = dlg.getWindow(); window.setContentView(R.layout.alert_input);//注意這裡用的是R裡面的id //window.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); TextView titleTextView = (TextView) window.findViewById(R.id.alert_input_title);
Android提供了豐富的對話框支持,它提供了如下4中常用的對話框:
- AlertDialog:警告對話框,使用最廣泛功能最豐富的一個對話框。
- ProgressDialog:進度條對話框,只是對進度條進行了簡單的封裝。
- DatePickerDialog:日期對話框。
- TimePickerDialog:時間對話框。
//=========在Activity中打開另一個Activity 1. startActivity(new Intent(mContext, MainActivity.class)); //=========在Fregment中打開另一個Activity 2. Intent intent = new Intent(getActivity(),CardActivity.class); getActivity().startActivity(intent); //======== 3. startActivityForResult() /* NOTE: 1. 當程序執行到這段代碼的時候,假若從T1Activity跳轉到下一個Text2Activity,而當這個Text2Activity調用了finish()方法以後,程序會自動跳轉回T1Activity,並根據T2Activity的setResult()方法調用前一個T1Activity中的onActivityResult( )方法。 2. 在Fragment中應該調用startActivityForResult()的方法 而不是getActivity().startActivityForResult() */ 相關函數: startActivityForResult(Intent intent, Int requestCode) setResut(int resultCode, Intent intent) onActivityResult(int requestCode, int resultCode, Intent intent)
例子:
http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html
使用Intent傳遞參數:
//添加參數 (默認使用的也是Bundle,和第二種方式一樣) intent.putExtra("key","String"); intent.putExtra("String",xxxxx); //其中xxxxx需要實現Serializable接口; //獲取參數 intent.getExtras().getString("key"); //獲取String類型的值 intent.getExtras().getXXXXX("key"); //獲取XXXXX類型的值 intent.getExtras().get("key"); //獲取Object類型的值,此時需要進行強制轉換 //添加Bundle Bundle bundle=new Bundle(); bundle.putXXX("String",XXXX); intent.putExtras(bundle); //獲取Bundle Bundle bundle = this.getIntent().getExtras(); XXX = bundle.getXXX("String");
將數據保存至SharedPreferences:
SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE); Editor editor=preferences.edit(); String name="xixi"; String age="22"; editor.putString("name", name); editor.putString("age", age); editor.commit();
從SharedPreferences獲取數據:
SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE); String name=preferences.getString("name", "defaultname"); String age=preferences.getString("age", "0");
haredPreferences的四種操作模式:
- Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容
- Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件.
- Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件.
- MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取.
- MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入.
我們直接找到“自定義控件”的代碼,然後 解決方法是定位觸發錯誤代碼段,並將造成此錯誤的代碼行用
if(!isInEditMode()){ //造成錯誤的代碼段 }
包起來,這樣在Eclipse中顯示時將跳過此代碼段而不再出現錯誤。這樣就可以正常預覽layout了。
http://blog.csdn.net/changemyself/article/details/43794725
在Map中取不存在的鍵值對時不會報異常,只會返回null;
利用jSONObject.get(Object key)方法及get(String key)取不存在的鍵值對時不會報異常,會返回null;
但是利用jSONObject.getxxx(String key)方法取時會報空指針異常
第一種情況是: json包是json-lib包是net.sf.json
怎樣判斷JSONObject返回的是字符串null還是null值.
研究源碼發現.JSONObject裡有一段代碼是當遇到json串中是null的時候.返回JSONNUll.
第二種情況是: org.json的包。這時候發現.返回的null是JSONObject.NUll
兩種包不一樣的返回NUll值
把activity或者fragment的實例傳入adapter中,然後就可以調用activity或者fragment裡面的方法。
場景:為listview中的item添加適配器,達到自定義item的效果。當點擊item中的時候調用Activity的方法,比如打開另一個Activity。
解決:在Adapter中維持一個對該Activity或Fragment的引用。當實例化這個Adapter時,對其中的這個引用賦值。這樣就可以根據需要調動Activity或者Fragment中的方法。
例如:
public class MyActivity extends Activity { public void test(){}; public void test(int position){} }BaseAdater:
public class MyBaseAdapter extends BaseAdapter{ MyActivity context; public MyBaseAdapter(MyActivity context){ this.context = context; } …… //調用MyActivity的方法。 context.test(); context.text(1); …… }
http://www.android100.org/html/201306/30/3376.html
//加上上面兩句,可以在觸發Back鍵或者點擊在popupWindow以外的區域時讓其dismiss
pop.setOutsideTouchable(true);//======第一句 pop.setBackgroundDrawable(new BitmapDrawable());//=======第二句
此部分有待商議:int和long在不同位的操作系統和編譯器分別代表多長的字節?
由int類型轉換為long類型是向上轉換,可以直接進行隱式轉換,但由long類型轉換為int類型是向下轉換,可能會出現數據溢出情況:
主要以下幾種轉換方法,供參考:
1. 強制類型轉換
long ll = 300000; int ii = (int)ll;
2. 調用intValue()方法
long ll = 300000; int ii= new Long(ll).intValue();
3. 先把long轉換成字符串String,然後在轉行成Integer
long ll = 300000; int ii = Integer.parseInt(String.valueOf(ll));
這三種方法都比較簡單明了。
使用/***/注釋,這種就會生成javadoc注釋,可以在類名,方法名、字段名上方輸入/**回車即可自動生成doc模版。
BaseAdapter的getView()方法的調用時機大致如下:
初始顯示時
listview滾動時
notifyDataSetChanged處理時
每一個item都要調用一次getView();
設置Textview的屬性
android:ellipsize="middle" //此處還有其他值,分別在頭部、中間、尾部顯示 android:maxEms="15" //元素的最大樹木 android:singleLine="true"
未完待續……
工作一段時間後,經常會被領導說,你這個進入速度太慢了,競品的進入速度很快,你搞下優化吧?每當這時,你會怎麼辦?功能實現都有啊,進入時要加載那麼多view,這也沒辦法啊,等
本節引言: 本節我們來把剩下的四種Drawable也學完,他們分別是: LayerDrawable,TransitionDrawable,Leve
先看效果圖新建player 類public class Player { private int playerHp = 3; private Bitmap bmpPlay
購物車最近寫了一個商城APP中常用功能“購物車”購物車效果圖如下:購物車功能需求如下:下面是購物車主activity“MainActi