編輯:關於Android編程
如果我們有這樣的需求:使用Activity1啟動Activity2,Activity2處理完數據後,將處理結果返回給Activity1,這時,可以使用startActivityForResult()函數。下面我們通過一個例子來看這個函數的用法,
我們先來看主布局文件main.xml,其內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="請輸入第一個數字:" />
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />"
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="請輸入第二個數字:" />
<EditText
android:id="@+id/editText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:text="提交"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textResult"
android:textSize="20dp"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
"
</LinearLayout>
下面看主Activity,其內容如下:
package com.liuhaoyu;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
String num1, num2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText edit1 = (EditText)findViewById(R.id.editText1);
final EditText edit2 = (EditText)findViewById(R.id.editText2);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
num1 = edit1.getText().toString();
num2 = edit2.getText().toString();
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putCharSequence("number1", num1);
bundle.putCharSequence("number2", num2);
intent.putExtras(bundle);
startActivityForResult(intent, 0x11);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(0x11 == resultCode)
{
TextView textResult = (TextView)findViewById(R.id.textResult);
String result = data.getStringExtra("result");
textResult.setText(num1 + " + " + num2 + " = " + result);
}
}
}
在啟動SecondActivity時,與上篇文章中使用startActivity()函數不同,這裡使用的是startActivityForResult(),該函數要求被啟動的活動即SecondActivity在處理完數據後,返回一個結果給MainActivity。startActivityForResult函數的第二個參數是兩個Activity約定的請求碼,可以自己定義,本程序使用0x11。
在MainActivity中,還需要實現onActivityResult回調函數,當SecondActivity將處理結果返回後,會執行這個函數。
SecondActivity的實現代碼如下:
package com.liuhaoyu;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SecondActivity extends Activity {
int sum;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
final String num1 = bundle.getString("number1");
final String num2 = bundle.getString("number2");
sum = Integer.parseInt(num1) + Integer.parseInt(num2);
TextView text = (TextView)findViewById(R.id.textView);
text.setText(num1 + " + " + num2 + " = " + String.valueOf(sum));
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final String result = String.valueOf(sum);
Intent data = new Intent();
data.putExtra("result", result);
setResult(0x11, data);
finish();
}
});
}
}
得到處理結果後,當用戶點擊“返回”按鈕,在該按鈕的監聽函數中,通過調用setResult()函數將要傳遞給MainActivity的數據返回。
SecondActivity的布局文件內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:textSize="20dp"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:text="返回"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />"
</LinearLayout>
最後,在AndroidManifest.xml文件中聲明SecondActivity:
<activity android:icon="@drawable/ic_launcher" android:name=".SecondActivity" android:label="計算結果" android:theme="@android:style/Theme.Dialog" > </activity>
Android對話框(四)PopupWindow
主布局 Popup對話框布局 package com.example.popupwindow; import
Android的ViewAnimator及其子類ViewSwitcher-android學習之旅(三十三)
ViewAnimator繼承了FrameLayout,多個組件重合在一起,可以加入多個組件,然後切換的時候會有動畫。ViewAnimator及其子類的繼承關系ViewAn
總結一下這兩天所學RecyclerView
recyclerView是android5.0之後推出的一款新的View布局,功能相較於ListView有過之而無不及,相信在以後的學習和工作中都將可能會用上,這兩天自己
Android自定義控件之廣告條滾動效果
在一些電子商務網站上經常能夠看到一些滾動的廣告條,許多軟件在首次使用時也有類似的廣告條,如圖:其實在github上有實現這種效果的控件,不過這東西做起來也是很簡單,我們今