2013年1月19日 星期六

[Android]小練習及觀念釐清之class間互相呼叫

這個topic會持續在這篇文章裡面更新 以方便之後查用

案例一:呼叫同一package的其他class method

若只是單純呼叫同一個package的其他class的話須遵守幾個規則
1.被呼叫的class method必須是static 如圖:
2.必須是同一package
3.若非void 即method宣告為public static say()的話method後面一定要有return,若無return即為void.
send.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
add.say();
}});

另一Class的code
package com.example.returntest;

public class add {
//這是被呼叫的class method
public static void say(){
System.out.println("這是從被呼叫metho所說的hello world");
}
}
執行點擊button結果: LogCat 顯示:這是從被呼叫metho所說的hello world
這是最簡單的一個呼叫應用,一般會這樣作主要是測試是否正確呼叫到另一個class的method

案例二:呼叫不同package的其他class method
遵守規則:必須copy package到同一專案資料夾下:

把案例一的returntest package copy到movie專案同一層 如圖:

package com.example.movie;

import com.example.returntest.*;
底下程式碼略

雖然都在com.example底下 可視為不同package的東西
使用上跟案例一一樣
add.say();
執行結果: LogCat 一樣顯示:這是從被呼叫metho所說的hello world
代表正確呼叫

案例三:傳值給同一package的其他class method並取得回傳
遵守規則:
1.副程式要return 值的話method就不能是void
2.主程式TextView setText的方法切記只能print String必須先轉換成String否則會報錯
主程式:
public class MainActivity extends Activity {
private EditText et;
private TextView tv;
private Button send;
public String gtext;
private int number;
private String returntext;
private String returntext2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText)this.findViewById(R.id.et);
tv = (TextView)this.findViewById(R.id.tv);
send = (Button)this.findViewById(R.id.send);
send.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
gtext = et.getText().toString();
number = Integer.valueOf(gtext).intValue();
add.say(number);
//從add.java承接return的number並從新assign到int a來
int a = add.say(number);
//測試並確定從add.java取得number
System.out.println(a+"從MainActivity印出");
        //將int a轉成string 否則 tv.setText會出錯,型態必須為String
returntext = String.valueOf(a);
String returntext2 = String.valueOf(add.say(number));
tv.setText("第一種方法"+returntext+"第二種方法"+returntext2);
}});}}


副程式:
package com.example.returntest;

public class add{
//這是被呼叫的class method
public static int say(int number){
number++;
                //測試是否確實從MainActivity收到number
System.out.println(number+"從add.java印出");
return number;
}
}

系列最後之
案例四:Android Activity相互傳值(使用intent)



未完待續..




沒有留言:

張貼留言