AndroidWidget基礎知識
AndroidWidget基礎知識
-
記得引入widget控制元件的包,importandroid.widget.*;
-
方法findViewById(R.id.*),該方法通過id標誌尋找控制元件,返回型別是View型別,View是所有控制元件的父類(就像MFC中CWnd型別是所有控制元件的父類一樣),所以要強制轉換成對應控制元件的型別。
-
TextView類,該類是靜態文字控制元件,有以下幾個方法:
setText(“”);設定控制元件中的文字的內容
-
Button類
setText(“”);設定控制元件上的文字的內容
voidsetOnClickListener(View.OnClickListener l)
Registera callback to be invoked when this view is clicked.
這個函式的作用就是設定按鈕被點選後的響應事件。
對於OnClickListener,它其實是view的一個內部類,這個內部類中只有一個共有的方法,那就是abstractvoid OnClick(View v),引數v是被點選的元件,函式內實現的是響應的事件。
-
Intent類
Intent是一種執行時繫結(runtimebinding)機制,它能在程式執行的過程中連線兩個不同的元件。通過Intent,你的程式可以向Android表達某種請求或者意願,Android會根據意願的內容選擇適當的元件來響應。
Anintent is an abstract description of an operation to beperformed.上面是androiddeveloper中對Intent類的描述,裡面還說,一個Intent物件就像各個activity之間的膠水一樣。在一個Intent物件中,包含以下資訊:
action |
Thegeneral action to be performed |
data |
Thedata to operate on |
component |
Specifiesan explicit name of a component class to use for the intent |
extras |
Thisis a Bundle(鍵值對,另一個activity裡面取資料的時候,就要用到key,找出對應的value) ofany additional information |
category |
Givesadditional information about the action to execute. |
type |
Specifiesan explicit type (a MIME type) of the intent data. |
方法:
Intent setClass(Context packageContext, Class<?>cls)
Conveniencefor calling setComponent(ComponentName) withthe name returned by a Class object.
IntentputExtra(string,stirng);
該函式在extra資訊中存放一個鍵值對,另一個activity可以根據傳進來的鍵的值來確定value的值。
由上面我們可以看出,要想搞清楚setclass,必須先弄明白什麼是setcompoment。
【注】context類的簡單解釋
Context字面意思上下文,位於frameworkpackage的android.content.Context中,其實該類為LONG型,類似Win32中的Handle控制程式碼,很多方法需要通過Context才能識別呼叫者的例項,比如說Toast的第一個引數就是Context,一般在Activity中我們直接用this代替,代表呼叫者的例項為Activity,而到了一個button的onClick(Viewview)等方法時,我們用this時就會報錯,所以我們可能使用ActivityName.this來解決,主要原因是因為實現Context的類主要有Android特有的幾個模型,Activity、Service以及BroadcastReceiver。
IntentsetComponent(ComponentName component)
(Usuallyoptional) Explicitly set the component to handle the intent.
按照我的理解,setClass()函式只不過是setCompoment()函式換了一種形式罷了,他們的作用是相同的,都是設定intent物件中的copoment的資訊,指明Intent物件要使用的裝置名稱。正如androiddeveloper中隊setClass的解釋一樣,它“只是通過使用類物件返回的名字來更方便的呼叫setcompoment”
通過設定Intent物件設定來進行activity之間跳轉的基本思路:
我們的主要目的已經很明確了,那就是通過點選一個按鈕Button,來實現兩個Activity之間的跳轉。那麼這個Button的點選響應事件可以通過使用setOnClickListener()來實現,只是這個函式的引數是view.OnClickListener這個內部型別的,而且如果我們要實現我們想實現的事件,那就必須來重寫這個類中的onClickt()這個方法。我們可以通過implementsOnClickListener來建立一個新的類來實現我們要響應的事件。也就是說,我們現在每實現一個事件,都要讓OnClickListener生出一個孩子來,只有通過構造這個孩子類的物件,我們才能夠實現這個事件響應。
首先,我們來過載一下內部類的OnClick()這個方法。
classMyListener implements OnClickListener{
publicvoid onClick(View v){
Intentintent = new Intent();//建立一個Intent物件
Intent.setClass(Activity_1.this,Activity_2.class);//設定該intent要使用的裝置,由第二個引數返回
Activity_1.this.startActivity(intent);//事件的響應
}
}
實現了該類之後,我們便能夠實現事件的響應了
myButton.setOnClickListener(newMyListener());
以上便構成了按鈕事件響應的所有的程式碼。
【注】Activity物件的startActivity的方法
VoidstartActivities(Intent[] intents)
Launcha new activity.
Intent1.putExtra(“label”,”Yelnosh”);
Intentintent = getIntent();
Stringvalue = intent.getStringExtra("lable");
Intent也可用於activity與其他應用程式之間的通訊,比如下面的例子:
Uriuri = Uri.parse("smsto:18707192345");
Intentintent = newIntent(Intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body","YelboshI love you!");
this.startActivity(intent);
這樣我們就不用在新建一個acitivity了,而是直接由本次的activity跳轉到發簡訊的介面,而且直接按傳送便可以了
相關文章
- 基礎知識
- AI 基礎知識AI
- Webpack 基礎知識Web
- Dart基礎知識Dart
- RabbitMQ基礎知識MQ
- webpack基礎知識Web
- javascript基礎知識JavaScript
- ThinkPHP基礎知識PHP
- Laravel基礎知識Laravel
- Redis基礎知識Redis
- Docker基礎知識Docker
- 程式基礎知識
- Envoy基礎知識
- DockerFile基礎知識Docker
- Nginx基礎知識Nginx
- CSS基礎知識CSS
- Java基礎知識Java
- PRML 基礎知識
- BGP基礎知識
- PHP基礎知識PHP
- React基礎知識React
- httpclient基礎知識HTTPclient
- HBase基礎知識
- Jquery基礎知識jQuery
- js基礎知識JS
- PGA基礎知識
- Javascript 基礎知識JavaScript
- ASM基礎知識ASM
- html基礎知識HTML
- 黑客基礎知識黑客
- Mysqli基礎知識MySql
- oracle 基礎知識Oracle
- SEO基礎知識
- CMMI 基礎知識
- qml基礎知識
- Mybatis基礎知識MyBatis
- Vue基礎知識Vue
- Kafka 基礎知識Kafka