編輯:關於Android編程
實現的效果圖片:主頁面上實現Button1與Button2的點擊;Button1點擊進入的界面顯示一段文字;Button2點擊進入的界面裡有一個文本框,編輯後點擊確定可以跳轉回主界面並在主界面下方顯示之前編輯的文字。
具體步驟如下:
1.依據之前建立工程的方法建立一個工程(參見《Android Application簡單實例(生成“Hello World!”)》一文),命名其為Hello World,layout名為main,Activity名為HelloWorldActivity。
2.建立好沒有錯誤之後,粘貼main文件,再復制兩個,分別命名為activityb,actiivtyc;並粘帖HelloWorldActivity文件,復制兩個,命名為ActvityB,ActivityC。修改java文件中的onCreate()。
3.之後我們的所有Activity都需要在Androdmanifest.xml文件中進行注冊,即:
4.之後編輯三個layout中的頁面文件,代碼在案例中可見,都采取線性布局,同時給各個控件加上id,位置大小布局,文字渲染。具體目標即上面幾個結果示意圖所需要達到的樣子。
main.xml:
activityb.xml:
5.編輯main頁面打開時的java文件,先設置哪個為布局文件->
之後得到控件,把控件的變量得到,就如同在js中得到控件的對象一樣->
之後為控件綁定監聽事件,這個控件的一個屬性是監聽,那個這個屬性中的參數,就要描述監聽什麼,如何監聽,需要new一個對象,作為這個參數來包含一個點擊的方法->
單擊後使用intent可以實現頁面的跳轉,分為兩條,一條為跳轉的描述,一條為啟動intent,(這裡注意可以回調的啟動與不可以回調的啟動)。
package com.HoD.helloworld; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class HelloWorldActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //將布局文件設置為main.xml setContentView(R.layout.main); //得到兩個Button控件 Button mButton1 = (Button)findViewById(R.id.button1); Button mButton2 = (Button)findViewById(R.id.button2); //為Button1綁定單擊事件 mButton1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ // TODO Auto-generated method stub //使用intent啟動ActivityB Intent _intent = new Intent(HelloWorldActivity.this, ActivityB.class); startActivity(_intent); } }); //為Button2綁定單擊事件 mButton2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ // TODO Auto-generated method stub //使用intent啟動ActivityB Intent _intent = new Intent(HelloWorldActivity.this, ActivityC.class); startActivityForResult(_intent, 100); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 100 && resultCode == Activity.RESULT_OK){ String val = data.getExtras().getString("helloworld"); TextView textView = (TextView)findViewById(R.id.tvDisplay); textView.setText("來自ActivityC的值:"+ val); } } }
6.編輯ActivityC的java文件,同樣也是先設置布局文件->
之後同樣也是獲取按鈕實例,並為其設置監聽事件->
不同的在於監聽對象采取的方法不同,首先實例化Intent()對象->
之後獲取編輯欄實例,再獲取其值->
把值利用putExtra()存入到Intent()的實例化對象中->
傳回這個值,並關閉頁面。
package com.HoD.helloworld; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class ActivityC extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設置activityc.xml為布局文件 setContentView(R.layout.activityc); //得到Button實例 Button button1 = (Button)findViewById(R.id.buttonc1); button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ // TODO Auto-generated method stub //實例化一個intent對象 Intent data = new Intent(); //獲取EditText實例 EditText editText = (EditText)findViewById(R.id.etActivityc); //得到EditText的值 String val = editText.getText().toString(); //將EditText的值存到intent對象中(以鍵值的形式) data.putExtra("helloworld", val); //調用setResult方法,將intent對象(data)傳回父Activity setResult(Activity.RESULT_OK, data); //關閉當前Activity finish(); } }); } }
7.在HelloWorld的java文件中,取得傳回來的值,不在本Activity生命周期的onCreate()中,而在onActivityResult()中,判斷傳回來的值合法後,取出值放入變量中,並實例化main中的隱藏文本框,顯示該值(結果已經顯示在上方HelloWorldActivity.java中)。
8.其中會遇到的典型問題是,intent cannot be resolved to a type,或者是監聽器不識別,內部onClick(View v)不識別。
這些都是相應的包未導入的結果,因為我們之前的JDK設置良好,jar包未主動添加,所以一般把相應的包import上就可以了(一般就是鼠標放在上頭就自動會提示import缺少的包了)。之後如果還報錯,那麼就Clean一下就好了,這個是eclipse未能自動編譯源代碼到build/classes(或其他classes目錄)導致類型找不到。
import android.content.DialogInterface.OnClickListener;或者如果導入這句,也會不對,應該是這個包import android.view.View.OnClickListener;
第7節 播放音樂音樂播放列表也准備好了,我們來播放音樂吧。完成後效果如下,實現音樂的播放,我們需要播放界面和音樂服務兩個方面的合作。7.1 MusicService前面我
這個功能可以幫你實現,在圖片上進行隨意的塗抹,可以用於SNS產品。繪圖本身很簡單,但是要實現在圖片上指定的部分精確(位置,縮放)的繪圖,就有點麻煩了。下面講講實現過程及原
隨著網絡購物的流行,我們經常要和不同的快遞公司打交道,大多數人都知道通過快遞單號可以在快遞公司網站上查詢快遞的狀態。但是如果自己不在電腦旁邊,是不是就查詢不
之前寫過一篇關於Android 繼承DialogFragment彈出dialog對話框一,這次是在上次的基礎上修改了一些東西,就是怎樣在DialogFragment中獲取