標籤:載入 XML 沒反應 public widget btn 自動產生 next extend
Android 中的介面跳轉,其實就是一個個的 Activity ,下面看下怎麼建立新的 Activity 布局
在項目 res 裡面的 layout檔案夾上右鍵 new -> Other -> Android檔案夾 下面的 -> Android XML Layout File
Next 之後 然後 在 File 那裡寫檔案名稱, Root Element:裡選個布局 ,然後 Finish 就建立成功
可以在 Form Widgets 中拖個 Button 按鈕 過介面那裡
雙擊 Button 這個 按鈕 會進入到 源碼那裡,會自動產生 有關 剛剛點擊的 Button的介面布局代碼
然後就在 ManActivity 裡載入這個資源布局 ,通過 setContentView 這個方法來載入 資源布局,傳入 R.layout.test 這個布局
R.layout.test 其實就在 之前建立在 layout 裡的 xml 檔案 ,這樣就可以載入布局了
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main); setContentView(R.layout.test); }}
然後 運行,載入成功
到這裡,我想搞事情啦,點擊 Button ,我發現什麼效果都沒,我想能和 JavaScript 一樣彈出點資訊出來一樣,點了半天都沒反應,JavaScript 有點擊事件,
這裡也應該有吧,果然是有方法如下
方法一: 在 MainActivity 的方法 onCreate 裡,通過 findViewById()方法找到布局裡的控制項,通過 Button 的 setOnClickListener() 方法傳入個
事件監聽的介面 OnClickListener 介面,這裡採用的是匿名內部類的方法,實現 onClick(View v) 這個方法就可以啦
private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main); setContentView(R.layout.test); btn1 = (Button) findViewById(R.id.testButton1); btn1.setText("點我"); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /** * Toast 類似與彈框一樣的 * context : 上下文,指的是 Activity,所以寫 MainActivity.this 就可以了 * text : 常值內容 * duration : 時間,int 類型數值 */ Toast.makeText(MainActivity.this, "你好 Android ", 1).show(); } }); }
然後 看看效果:
方法二:
之前的步驟一樣,差別在於,在 Button 的 setOnClickListener() 方法裡傳入的是一個實作類別,
建立一個 類 去實現 OnClickListener 介面
public class Btn1ClickListener implements OnClickListener { private Context context; public Btn1ClickListener(Context context) { this.context = context; } @Override public void onClick(View v) { Toast.makeText(context, "你好 Android 1班", 1).show(); }}
就可以在 MainActivity 裡直接用了
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main); setContentView(R.layout.test); /* *//** * 第二種方法 */ btn1 = (Button) findViewById(R.id.testButton1); btn1.setText("點我"); // 直接 new 個執行個體出來 傳入 content 就可以了 btn1.setOnClickListener(new Btn1ClickListener(this)); }
效果如下:
Android ch03 Activity_layout and Button 點擊事件