1 . Gradle DSL method not found: 'runProguard()'
ที่ไฟล์ build.gradle เปลี่ยนดังนี้
runProguard false >> minifyEnabled false
..........................................................................................................................
2.SecurityException: Permission denied (missing INTERNET permission?)
เพิ่มบรรทัดนี้ลงไปที่ AndroidManifest.xml
..........................................................................................................................
3.FATAL EXCEPTION: main android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
1) Don't write network call in Main UI Thread, Use Async Task for that.
2) Write below code into your MainActivity file after setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
..........................................................................................................................
4. Error:(10, 8) error: class MyPageAdapter is public, should be declared in a file named MyPageAdapter.java
ตั้งชื่อไฟล์ java ไม่ตรงกับชื่อ class ให้แก้ให้ตรงกันซะ (ตรง
..........................................................................................................................
5.no such table : message หรือขึ้นว่าไม่มี table
-ให้ตรวจสอบว่าสร้างแล้วยัง ถ้าคำสั่งถูกหมดให้ลองเปลี่ยนชื่อ table ใหม่
-ลองเปลี่ยนเวอร์ชั่น database sqllite ใหม่
..........................................................................................................................
===========TIP ใช้ประจำ=============
1.ส่งตัวแปรข้ามหน้า
ใน MainActivity.java
Intent in = new Intent(MainActivity.this,SecondActivity.class); //มี class ปัจจุบันเป็น MainActivity.java และ class ปลายทาง SecondActivity.java
in.putExtra("key",value); //ส่งตัวแปรพร้อมค่า
startActivity(in); //เปลี่ยนหน้าไปปลายทาง
ใน SecondActivity.java
Intent in = getIntent();
String var = in.getStringExtra("key"); //รับตัวแปร
..........................................................................................................................
2.วันเวลา
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
long today = (new Date()).getTime(); //เวลาขณะนี้
long bday = 0;
String birthday = dpBirthday.getYear() + "-" + (dpBirthday.getMonth()+1) + "-" + dpBirthday.getDayOfMonth();
try {
bday = formatter.parse(birthday).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
long age = (today-bday)/(1000*60*60*24);
..........................................................................................................................
3.JSON
อ่านจากสตริงเดียว
String json = "{\"sName\":\"Sawatdee : Weerachai Nukitram\",\"sEmail\":\"Sawatdee : is_php@hotmail.com\"}";
JSONObject c = new JSONObject(json);
String strResultName = c.getString("sName");
String strResultEmail = c.getString("sEmail");
อ่านจาก array 2d
String strJSON = "[{\"MemberID\":\"1\",\"Name\":\"Weerachai\",\"Tel\":\"0819876107\"}" +
",{\"MemberID\":\"2\",\"Name\":\"Win\",\"Tel\":\"021978032\"}" +
",{\"MemberID\":\"3\",\"Name\":\"Eak\",\"Tel\":\"0876543210\"}]";
JSONArray data = new JSONArray(strJSON);
ArrayList
HashMap
for(int i = 0; i < data.length(); i++){
JSONObject c = data.getJSONObject(i);
map = new HashMap
map.put("MemberID", c.getString("MemberID"));
map.put("Name", c.getString("Name"));
map.put("Tel", c.getString("Tel"));
MyArrList.add(map);
}
อ่านจากหลายมิติ
try
{
String jsonString="";//your json string here
JSONObject jObject= new JSONObject(jsonString).getJSONObject("categories");
Iterator
while( keys.hasNext() )
{
String key = keys.next();
Log.v("**********", "**********");
Log.v("category key", key);
JSONObject innerJObject = jObject.getJSONObject(key);
Iterator
while( innerKeys.hasNext() )
{
String innerKkey = keys.next();
String value = innerJObject.getString(innerKkey);
Log.v("key = "+key, "value = "+value);
}
}
}
catch (JSONException e)
{ e.printStackTrace(); }
..........................................................................................................................
4.ใส่เส้นคั่นหน้า
android:background="#CCCCCC" />
..........................................................................................................................
5.Layout ต่างๆ
1. Linear Layout เรียงเป็นเส้นตรง แนวนอน หรือ แนวตั้ง โดยใช้คำสั่ง
android:orientation = "horizontal"
android:orientation = "vertical"
2. Relative Layout เรียงตามตำแหน่งอ้างอิงกับ element อื่นๆ ในเลย์เอาต์ หรือ อ้างอิงกับเลย์เอาต์ที่ตัว element นั้นอยู่ โดยใช้คำสั่ง
android:layout_below = "@android:id/text1"
android:layout_toRightOf = "@android:id/checkbox"
3. Frame Layout เป็นการเรียงแบบ stack คือตัวที่สร้างทีหลังจะวางอยู่บนสุด
4. Absolute Layout เป็นการเรียงแบบที่เรากำหนดตำแหน่ง โดยใช้คำสั่ง
android:layout_x="100dp"
android:layout_y="50dp"
5. Table Layout เป็นการเรียงแบบตาราง โดยที่ control แต่ละตัวจะถือเป็น 1 คอลัมน์
โดยจะใช้ .. ครอบแต่ละแถวของตาราง
..........................................................................................................................
6.ใส่ background
android:background="@drawable/bg"
..........................................................................................................................
7.Full Screen app
เปลี่ยน extends เป็น Activity (ห้ามเป็น actionbarActivity) , เพิ่ม 3 บรรทัดนั้นก่อน setContent
public class FullScreen extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
}
หรือใช้วิธี
Alternatively you can add
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
to AndroidManifest.xml under
..........................................................................................................................
8.ทำให้ element ภายในพอดี
android:scaleType="centerCrop"
..........................................................................................................................
9.ทำให้ปุ่มกระพริบเป็นอีกภาพเมื่อคลิก
แล้ว save ไว้ใน drawable folder เช่น button.xml
ส่วนใน button activity เพิ่ม android:src="@drawable/button"
..........................................................................................................................
10.รับรู้เมื่อปุ่มถูกกด
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
หรือ
android:onClick="selfDestruct"
แล้วเพิ่ม
public void selfDestruct(View view) {
// Kabloey
}
..........................................................................................................................
11. เรียกใช้ JSON
JSONArray arr = new JSONArray(result);
JSONObject jObj = arr.getJSONObject(0);
String date = jObj.getString("NeededString");
..........................................................................................................................
12. ทำให้มีหลายแท็ป
http://www.thaicreate.com/mobile/android-tabhost.html
http://devahoy.com/2014/09/android-tab-with-tabhost-and-actionbar-tab/
http://www.akexorcist.com/2014/11/lets-fragment-view-pager-1.html
ใส่รูปใน tab ด้วย view
http://stackoverflow.com/questions/14535085/add-image-or-style-to-each-tab
..........................................................................................................................
13.การนำภาพมาใช้ เช่น button.jpg จากโฟลเดอร์ Drawable
getResources().getDrawable(R.drawable.button)
..........................................................................................................................
14.เพิ่มสี
Then declare gray in your res\values\strings.xml
แล้วเรียกใช้ผ่าน @color/grey ได้เลย
..........................................................................................................................
15.การเปลี่ยน string เป็น string[]
String[] ary = "abc".split("");
ary จะเป็น {"a","b","c"}
..........................................................................................................................
16.SQLLITE การลบ
// Delete Data
public long DeleteData() {
// TODO Auto-generated method stub
try {
SQLiteDatabase db;
db = this.getWritableDatabase(); // Write Data
db.delete(TABLE_MEMBER, null, null);
return 0;
} catch (Exception e) {
return -1;
}
}
..........................................................................................................................
17.refresh activity ใหม่
finish();
startActivity(getIntent());
..........................................................................................................................
18.android life cycle
http://startandroid.ru/en/lessons/complete-list/232-lesson-24-activity-lifecycle-example-about-changing-states-with-two-activities.html
..........................................................................................................................
19.kill thread
myService.getThread().interrupt();
..........................................................................................................................
20.Custom list view
http://www.akexorcist.com/2012/09/android-code-custom-list-view.html
..........................................................................................................................
21.การอัพเดท listview
เอาโค้ดนี้ไว้ที่ไหนก็ได้ เช่น เมท็อตรีเฟชร ให้ Thread เรี่ยกใช้ หรือ onResume()
adapter.getData().clear(); //เข้าไปลบ data ใน adapter (ต้องทำ method getData() ไว้ที่ adapter ด้วย)
adapter.setData(m.SelectAllData()); //เข้าไปเพิ่ม data ใน adapter เป็นตัวใหม่ ต้องมีเมท็อตเหมือนกัน
adapter.notifyDataSetChanged();
listView.invalidateViews();
listView.refreshDrawableState();
..........................................................................................................................
22.ทำให้ Thread สามารถเรียกเมท็อดได้ ให้ครอบด้วย handler
handler.post(new Runnable() {
public void run() {
f.refresh1(); //เมท็อดที่จะเรียก
}
});
..........................................................................................................................
23. Print to console
Log.d("array", a.size() + "");
..........................................................................................................................
24.สร้างตัวแจ้งเตือน
Toast.makeText(getApplicationContext(),
"Sorry", Toast.LENGTH_SHORT).show();
..........................................................................................................................
25.ทำ popup แบบมีหลายตัวเลือก
http://devahoy.com/2014/04/android-dialog-and-custom-dialog-example/#multi-choice-dialog
..........................................................................................................................
=====================hot-key=====================
[[android : pc]]
Home = Home
Back = esc
Power = F7
Menu = F2
VolUp = Ctrl-F5
VolDown = Ctrl-F6
Press ALT+spacebar together, then release and press m. You are now in Move mode. press Enter to exit Move mode.
ออโต้อิมพอต
http://stackoverflow.com/questions/16615038/what-is-the-shortcut-to-auto-import-all-in-android-studio
ไม่มีความคิดเห็น:
แสดงความคิดเห็น