Android初學特訓班(第四版) |
|
冠志
更新時間:2014/6/21 下午 08:29:54 |
|
在eclipse新建了新專案,在MainActivty.java的原始碼裡多了跟書上不一樣的涵式,應該升級後的關係,但可以請老師解釋那些多出來涵式的意義嗎? ex: 1. if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } 2. public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }
等等
|
|
|
|
文淵閣工作室
更新時間:2014/6/23 上午 05:48:46 |
|
的確,這是升級到ADT 22.6 的新模式。 1. 以往,layout 直接設定在 layout/activity_main.xml中,新模式則 僅在其中命名: android:id="@+id/container"。 再以 .add(R.id.container, new PlaceholderFragment()) 加入PlaceholderFragment,最後用 View rootView = inflater.inflate(R.layout.fragment_main, container,false); 加入fragment_main,因此真正的 layout是設在 layout/fragment_main.xml中。
2. onOptionsItemSelected 在之前版本就存在,是使用者選取 Action Menu 項目的處理事件。 |
|
|
|
黃鐘毅
更新時間:2014/6/30 下午 03:31:59 |
|
如何針對ADT 22.6 多出的函數 套用在書本上例子 因為我按照書上的順序去寫 結果都是無法完成
可以用例子 ExMileTOKm 的MainActivty.java 修改完成的寄到我的信箱嗎? |
|
|
|
黃鐘毅
更新時間:2014/6/30 下午 03:43:09 |
|
package com.example.exmiletokm;
import com.ehappy.exmiletokm.R;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.os.Build;
public class MainActivity extends ActionBarActivity { //宣告變數 private EditText edtMile; private TextView txtKm; private Button btnTran;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取得介面元件 edtMile = (EditText) findViewById (R.id.edtMile); txtKm = (TextView) findViewById (R.id.txtKm); btnTran = (Button) findViewById (R.id.btnTran); //為Button 元件加入click事件的偵聽,觸發時執行自訂方法 btnTranListener btnTran.setOnClickListener(btnTranListener); } private Button.OnClickListener btnTranListener= new Button.OnClickListener(){ public void onClick(View v){ double miles = Double.parseDouble(edtMile.getText().toString()); double km = 1.61*(double)miles; txtKm.setText("時速 ="+km+"公里"); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } }
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }
/** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() { }
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } }
} 這是我按照書本順序 打的 但是結尾有問題 |
|
|
|
文淵閣工作室
更新時間:2014/7/1 上午 11:10:43 |
|
主因是 layout 置於 <fragment_main.xml> 中,修改檔已寄給您。 |
|
|
|
黃鐘毅
更新時間:2014/7/1 下午 02:27:00 |
|
抱歉 還沒收到 修改檔 |
|
|
|
黃鐘毅
更新時間:2014/7/1 下午 09:18:28 |
|
目前還是沒收到修改檔 可以在寄一次嗎 s0935376290@yahoo.com.tw |
|
|
|
文淵閣工作室
更新時間:2014/7/2 上午 05:33:41 |
|
已再寄,請查收! |
|
|
|
黃鐘毅
更新時間:2014/7/2 下午 02:38:59 |
|
感謝 我收到了 |
|
|
|
歐陽愷謙
更新時間:2014/8/3 下午 12:32:53 |
|
不好意思,我的ExMileToKm專案最後也有問題,可否也寄修正檔給我呢?謝謝! e-mail:s42411562266@gmail.com |
|
|
|
文淵閣工作室
更新時間:2014/8/4 上午 06:37:42 |
|
已寄出,請查收! |
|
|
|
黃鐘毅
更新時間:2014/8/4 下午 01:07:35 |
|
@Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // TODO Auto-generated method stub // 顯示 ListView 的選項內容 if (lstPrefer.isItemChecked(position)) {// 已核選 String sel = parent.getItemAtPosition(position) .toString(); setTitle("目前選取:"+sel);
setTitle下面出現紅字內容如下 Cannot make a static reference to the non-static method setTitle(CharSequence) from the type Activity
尋求老師 幫忙 我該如何修改
|
|
|
|
文淵閣工作室
更新時間:2014/8/5 上午 09:08:00 |
|
請將檔案壓縮後寄來,我們樂意為您測試! |
|
|
|
歐陽愷謙
更新時間:2014/8/5 下午 09:56:41 |
|
收到了!!感謝! |
|
|
|
文淵閣工作室
更新時間:2014/8/6 上午 09:10:52 |
|
您可試試這個語法: getActivity().setTitle("顯示訊息"); |
|
|
|
黃鐘毅
更新時間:2014/8/6 下午 03:22:28 |
|
感謝老師 我學到了 |
|
|
|
黃鐘毅
更新時間:2014/8/6 下午 11:21:07 |
|
在請教一下 第八章例題excontextmenu 在activity_main.xml 執行OK 但是可以轉換到fragment_mail.xml執行嗎? 如果可以 那在MainActivity.java的文法上 我需要作怎樣的修改 |
|
|
|
文淵閣工作室
更新時間:2014/8/9 上午 08:41:22 |
|
我已將範例寄給您! |
|
|
|
黃鐘毅
更新時間:2014/8/9 下午 08:02:43 |
|
同樣第八章 Ch08_ex2 我嚐試以fragment_main去實作 雖然可以執行 但是有個地方 有點疑惑 int count = imgId.length;// 共有多少張圖片 static int p = 0; // 圖片的索引(第幾張圖片) 這兩條無法放在一起 imgId會出現紅字 請問有改善的方式嗎?
程式如下:public class MainActivity extends ActionBarActivity {
private static ImageView imgPhoto; static String[] BookId = { "AEL011200", "AEL011300", "AEL011400", "ACL030131", "ACL027400", "ACL027100" }; static String[] BookName = { "Visual C# 2010程式設計速學對策", "Visual Basic 2010 程式設計速學對策", "ASP.NET 4.0 網頁程式設計速學對策(使用C#)", "挑戰Visual C++ 2008程式設計樂活學", "挑戰Visual C# 2008程式設計樂活學", "挑戰Visual Basic 2008程式設計樂活學" }; private static Button btnNext; private Toast toast;
static int p = 0; // 圖片的索引(第幾張圖片)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } }
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { registerForContextMenu(imgPhoto); super.onCreateContextMenu(menu, v, menuInfo); if (v == imgPhoto) { String str = "書號: " + BookId[p] + "\n" + "書名: " + BookName[p]; Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show(); } }
@Override public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId();
if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }
/** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment {
private OnClickListener btnNextListener; int[] imgId = { R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04, R.drawable.img05, R.drawable.img06 };
int count = imgId.length;// 共有多少張圖片
public PlaceholderFragment() { }
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); // 取得資源類別 R 中的介面元件 btnNext = (Button) rootView.findViewById(R.id.btnNext); imgPhoto = (ImageView) rootView.findViewById(R.id.imgPhoto); // 定義 btnNext 按鈕的onClick() 方法 Button.OnClickListener btnNextListener = new Button.OnClickListener() {
@Override public void onClick(View v) { // TODO Auto-generated method stub p++; if (p == count) p = 0; imgPhoto.setImageResource(imgId[p]);
} }; // 放到這邊才不會當機 設定 button 元件 click 事件的 listener btnNext.setOnClickListener(btnNextListener); // 放到這邊才不會當機 registerForContextMenu(imgPhoto);
return rootView; } } }
|
|
|
|
文淵閣工作室
更新時間:2014/8/10 下午 04:32:16 |
|
您好: 因為程式碼長,解釋不易,寄給您範例完成檔。
imgPhoto 註冊的時機在 onCreateView() 方法中較恰當。 registerForContextMenu(imgPhoto); |
|
|
|
東穎
更新時間:2014/8/11 下午 01:47:08 |
|
package com.ehappy.exmultibuttm;
import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView;
public class MainActivity extends ActionBarActivity { //宣告全域變數 private TextView txtShow; private Button btnZero,btnOne,btnTwo,btnThree,btnFour; private Button btnFive,btnSix,btnSeven,btnEight,btnNine;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取得資源類別檔中的介面元件 txtShow=(TextView)findViewById(R.id.txtShow); btnZero=(Button)findViewById(R.id.btnZero); btnOne=(Button)findViewById(R.id.btnOne); btnTwo=(Button)findViewById(R.id.btnTwo); btnThree=(Button)findViewById(R.id.btnThree); btnFour=(Button)findViewById(R.id.btnFour); btnFive=(Button)findViewById(R.id.btnFive); btnSix=(Button)findViewById(R.id.btnSix); btnSeven=(Button)findViewById(R.id.btnSeven); btnEight=(Button)findViewById(R.id.btnEight); btnNine=(Button)findViewById(R.id.btnNine); //設定Button元件 Click 事件共用myListner btnZero.setOnClickListener(myListner); btnOne.setOnClickListener(myListner); btnTwo.setOnClickListener(myListner); btnThree.setOnClickListener(myListner); btnFour.setOnClickListener(myListner); btnFive.setOnClickListener(myListner); btnSix.setOnClickListener(myListner); btnSeven.setOnClickListener(myListner); btnEight.setOnClickListener(myListner); btnNine.setOnClickListener(myListner); }
//設定onClick()方法 private Button.OnClickListener myListner=new Button.OnClickListener() {; @Override public void onClick(View v) { String s=txtShow.getText().toString(); switch (v.getId()) { case R.id.btnZero:{ txtShow.setText(s + "0"); break; } case R.id.btnOne:{ txtShow.setText(s + "1"); break; } case R.id.btnTwo:{ txtShow.setText(s + "2"); break; } case R.id.btnThree:{ txtShow.setText(s + "3"); break; } case R.id.btnFour:{ txtShow.setText(s + "4"); break; } case R.id.btnFive:{ txtShow.setText(s + "5"); break; } case R.id.btnSix:{ txtShow.setText(s + "6"); break; } case R.id.btnSeven:{ txtShow.setText(s + "7"); break; } case R.id.btnEight:{ txtShow.setText(s + "8"); break; } case R.id.btnNine:{ txtShow.setText(s + "9"); break; } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; return super.onOptionsItemSelected(item); } }
最後面的} 一直出現錯誤 是否可以告訴我哪裡有問題嗎 謝謝老師~ |
|
|
|
黃鐘毅
更新時間:2014/8/13 下午 07:04:27 |
|
第十二章 exwelcome 在電腦上的 模擬器測式 回傳的字串使用者正確 但是實機手機上測試 回傳的字串出現 機碼 請問老師 這是因為什麼原因造成?有處理的方法或是書籍? |
|
|
|
文淵閣工作室
更新時間:2014/8/14 上午 06:25:58 |
|
請問您的環境是 adt 22.3 還是 23.0.2?我在 22.3 中測試,模擬器及實機都正常。 |
|
|
|
黃鐘毅
更新時間:2014/8/14 下午 03:39:59 |
|
Build: v22.6.2-1085508 |
|
|
|
文淵閣工作室
更新時間:2014/8/15 上午 06:22:13 |
|
我在 adt 22.6 下測試實機也正常。 請把您練習的專案寄給我們測試。 |
|
|
|
黃鐘毅
更新時間:2014/8/26 下午 05:51:07 |
|
請問本書練完之後 後續還可以買哪本書? |
|
|
|
文淵閣工作室
更新時間:2014/9/2 上午 10:15:33 |
|
您好: Android 的範圍太廣了,幾乎很難有一本書可以包山包海,如果是,大概也會堅澀難懂。 基本上,每本書都有它的優點,完全看每個人不同的需求。 您可以 po:「 Android 4.X 」應該可以找到一些參考的資料 我們手上雖然有一些參考的書籍,但因為我們其實並未很認真的研讀它,所以我們還是保留一些。也恭喜您即將進入另一個更進階的里程。 |
|
|
|
黃鐘毅
更新時間:2014/9/4 下午 05:30:27 |
|
謝謝 目前因為還沒找到合適的書籍 所以 改看 貴社的App lnventor 2 初學特訓班 目前 進度 還不錯 |
|
|
|