編輯:關於Android編程
開發環境:android4.1.
實驗功能:
在第一個界面中的2個乘數輸入處分別輸入2個數字,按下結果button,會自動跳到第二個界面並顯示輸入2個數字相乘的結果。如果在第一個界面中點擊系統的menu按鈕,則會自動彈出一個菜單,菜單欄包括退出和關於2個按鈕,點擊退出按鈕,則退出了該程序。
實驗說明:
1. 第1個activity的步驟大概如下:
創建一個監聽器。
創建一個intent,並將獲取到的2個輸入數字分別以鍵值對的形式輸入intent。
連接第1個activity和第2個activity。
啟動intent。
把該監聽器綁定到計算結果button中。
2.第2個activity的步驟大概如下:
創建一個監聽器。
創建一個intent,並從intent中的鍵值對獲得字符串,保存好。
將字符串轉換成數字,並相乘。
將相乘結果在TextView中顯示出來。
3. 加入菜單項需要重寫onCreateOptionsMenu()函數,無需在xml布局中添加相應的控件。
4. 相應菜單單擊時需要重寫onOptionsItemSelected()函數。
5. 在android的java文件中導入包的時候,千萬要注意區分名字的大小寫。
6. 一般在java程序中顯示文本時,為了達到程序的國際化,最好不要把文本內容在java中指定,而需要在對應的xml文件中指定,然後在java代碼中調用其資源即可.因為這樣我們只需更改一個xml文件(當然一般是有多個語言版本的xml文件,然後不同版本的軟件調用不同的xml即可)。
7. 內部類在java中比較常見,就是類中嵌入類,這種情況在多線程中應用得比較多。在內部類中可以使用外部類的成員變量,函數和對象等。
8. android控件中的menu控件不需要在xml中給出,直接在java源碼中重寫一些函數即可。
9. intent不僅可以在同一程序中的2個actibity中進行傳遞數據,還可以啊不同程序中的activity中進行數據傳遞。
10. java中將字符串轉換成整數的語法是用Integer.parseInt(string);
11.java運算中只要2者其中有一個為字符型,則會自動將另一個也轉換成字符串 .
實驗結果:
實驗主要部分代碼及注釋:
MainActivity.java:
復制代碼 代碼如下:
package com.example.factor;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView factor;
private EditText factor1;
private EditText factor2;
private Button result;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
factor = (TextView)findViewById(R.id.factor);
factor1 = (EditText)findViewById(R.id.factor1);
factor2 = (EditText)findViewById(R.id.factor2);
result = (Button)findViewById(R.id.result);
factor.setText(R.string.factor);
result.setText(R.string.result);
//綁定一個監聽器到該按鈕
result.setOnClickListener(new onResultClickListener());
}
//該函數其實是一個回調函數,但在系統中按下了menu按鈕時會自動調用這個函數
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//要在返回代碼之前加入
menu.add(0, 1, 1, R.string.exit);
menu.add(0, 2, 2, R.string.about);
return super.onCreateOptionsMenu(menu);
}
//菜單項選擇函數重寫
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if( 1 == item.getItemId() )
finish();
return super.onOptionsItemSelected(item);
}
//創建一個監聽器
class onResultClickListener implements OnClickListener{
public void onClick(View v) {
//獲取2個edit輸入的數字
String factor1_str = factor1.getText().toString();
String factor2_str = factor2.getText().toString();
//建立intent,並將數據傳入,且激活ResultActivity
Intent intent = new Intent();
intent.putExtra("factor1", factor1_str);
intent.putExtra("factor2", factor2_str);
intent.setClass(MainActivity.this, ResultActivity.class);
//啟動intent
MainActivity.this.startActivity(intent);
}
}
}
ResultActivity.java:
復制代碼 代碼如下:
package com.example.factor;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
public class ResultActivity extends Activity {
private TextView result_dis;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
result_dis = (TextView)findViewById(R.id.result_view);
Intent intent = getIntent();
String factor_str1 = intent.getStringExtra("factor1");
String factor_str2 = intent.getStringExtra("factor2");
//java中將字符串轉換成整數的語法
int factor_int1 = Integer.parseInt(factor_str1);
int factor_int2 = Integer.parseInt(factor_str2);
int result = factor_int1 * factor_int2;
//java運算中只要2者其中有一個為字符型,則會自動將另一個也轉換成字符串
result_dis.setText(result + "");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_result, menu);
return true;
}
}
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/factor1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/factor"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/factor2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
activity_result.xml:
復制代碼 代碼如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/result_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
></TextView>
</RelativeLayout>
實驗總結:
本次實驗對intent的應用有了稍許的了解,體會到了java和c++編程稍許不同的地方。
作者:tornadomeet
今天來給大家介紹一個非常有用的Studio Tips,有些時候我們在一個方法內部寫了過多的代碼,然後想要把一些代碼提取出來再放在一個單獨的方法裡,通常我們的做法是復制粘貼
現在許多APP應用都需要實現地圖功能,能夠很好的對自己所在的位置進行定位。因此,我嘗試著使用下百度地圖實現將自己的位置顯示出來。這裡我使用百度為我們提供的“百
前言前幾篇文章中,筆者對View的三大工作流程進行了詳細分析,而這篇文章則詳細講述與三大工作流程密切相關的兩個方法,分別是requestLayout和invalidate
一. AChartEngine 簡介 1. 項目地址 AChartEngine 簡介 : AChar