New Ribbon
用Canva設計超快超質感(第2版):商業設計、簡報、影片、網頁、電子書與AI應用最速技 AI繪圖工具 × AI視覺設計平台,從圖像生成到專業設計! 最強職場助攻!ChatGPT + AI 高效工作術 短影音制霸:打造TikTok、YT Shorts、IG Reels成功方程式與AI高效創作力 Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全

 

   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 初學特訓班
目前 進度 還不錯




 

 

Re: Android初學特訓班(第四版)

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。