Android基礎及應用 Intent的呼叫

Walter Sun發表於2018-04-28

一、實驗目的

1. 瞭解Intent的組成; 

2. 掌握使用Intent啟動Activity的方法;

3. 掌握獲取Activity返回值的方法。

二、實驗過程

在實驗的工程基礎上,新增Activity,利用Intent實現Activity元件之間的相互呼叫。

本實驗中涉及的相關資料項可以自行設計,也可參考4、附錄”中給出的資料。

1、建立資訊顯示介面

建立新的Blank ActivityActivity NameLayout Name修改為有實際含義的名稱,介面如圖2.1所示。

 

2.1 資訊顯示介面

點選圖1.4中的“檢視”選單項將會啟動圖2.1的資訊顯示介面,此時介面上應該顯示出所選擇檢視的姓名的所有欄位資訊。

點選“返回”按鈕將會回到圖1.1的基本資訊介面。

 

1.1基本資訊介面

2、建立專業設定介面

建立新的Blank ActivityActivity NameLayout Name修改為有實際含義的名稱,介面如圖2.2所示。

 

2.2 專業設定介面

點選圖1.3中的“專業設定”子選單項將會啟動圖2.2的專業設定介面,此時介面上應該顯示出圖1.1的專業Spinner控制元件中列出的所有專業資訊

點選“新增”按鈕則把EditText控制元件中輸入的專業名稱加入下面的ListView控制元件列表,如果EditText控制元件為空,則要給出相應提示。介面如圖1所示

 

1 新增專業事件

點選“返回”按鈕將會回到圖1.1的基本資訊介面,此時在專業設定介面上做的任何改變都應該給出廣播訊息提示,並在圖1.1的專業Spinner控制元件中體現出來。效果如圖2所示。

 

2返回按鈕事件

點選“新增”按鈕程式碼:

public void onClick(View arg0) {

// TODO Auto-generated method stub

majorName1 = majorName.getText().toString()//獲取id為majorName的控制元件的值

if(majorName1 == null||majorName1.length()<=0)

Toast.makeText(getApplicationContext(), "專業名不能為空", Toast.LENGTH_LONG).show();

else

list.add(majorName1);             //數列新增majorName   

}

});

點選“返回”按鈕程式碼:

//設定返回鍵的內容

public void onClick(View arg0) {

// TODO Auto-generated method stub

Uri data=null;

Intent result=new Intent(null,data);

result.putStringArrayListExtra("major", list);   

setResult(RESULT_OK,result);              //結果碼RESULT_OK對應返回值result

finish();

}

});

}

//獲取子Activity的返回值的類

 @Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, data);

switch(requestCode){          //判斷子Activity

case sub2:

if(resultCode==Activity.RESULT_OK){        //判斷返回的資料

ArrayList<String> list1=data.getStringArrayListExtra("major");

list=list1;                           //修改專業數列

ArrayAdapter<String> spinnerAdapter=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list1);

spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(spinnerAdapter);

    break;

}

}

}

}

3、新增快捷選單

為專業設定介面上的ListView控制元件新增一個快捷選單,包含“修改”和“刪除”兩個選單項,效果如圖2.3所示。

 

2.3專業設定快捷選單

點選“修改”選單項則會根據EditText控制元件中輸入的內容修改所選擇項的專業名稱,同時更新下面的ListView控制元件列表,如果EditText控制元件為空,則要給出相應提示。效果如圖3所示。

 

3 修改選單事件

點選“刪除”選單項則刪除所選擇項的專業名稱,同時更新下面的ListView控制元件列表效果如圖4所示。

 

4 刪除選單事件

“修改”選單和“刪除”選單的程式碼:

final static int SHORTCUTMENU_1=Menu.FIRST;

final static int SHORTCUTMENU_2=Menu.FIRST+1;:

//listView2控制元件的快捷選單

  @Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

// TODO Auto-generated method stub

super.onCreateContextMenu(menu, v, menuInfo);

menu.add(0,SHORTCUTMENU_1,0,"修改");

menu.add(0,SHORTCUTMENU_2,0,"刪除");

}

//響應快捷選單選擇事件的類

public boolean onContextItemSelected(MenuItem item){

switch(item.getItemId()){

case SHORTCUTMENU_1:

majorName1 = majorName.getText().toString();       //獲取id為majorName的控制元件的值

if(majorName1 == null||majorName1.length()<=0)

Toast.makeText(getApplicationContext(), "專業名不能為空", Toast.LENGTH_LONG).show();

else

list.set(number,majorName1);

ArrayAdapter<String> listAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);

    listView2.setAdapter(listAdapter);//將數列加入listView2列表中

return true;

case SHORTCUTMENU_2:

list.remove(number);

ArrayAdapter<String> listAdapter1=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);

    listView2.setAdapter(listAdapter1);//將數列加入listView2列表中

return true;

}

return false;

}  

相關文章