Android開發歷程_2(實現簡單的乘法計算)


         本次實驗主要是完成輸入2個數相乘,並顯示其結果。共涉及到4個控件的使用學習,輸入數字采用EditText,顯示結果用TextView,運算按鈕button以及菜單中的退出鍵。參考資料為mars老師的資料。

         開發環境: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者其中有一個為字符型,則會自動將另一個也轉換成字符串 .

 

  實驗結果:

  

  輸入界面:

  

 

  輸出界面:

  

 

  加入menu菜單后:

  

        

實驗主要部分代碼及注釋:

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++編程稍許不同的地方。

 

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM