zoukankan      html  css  js  c++  java
  • 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++编程稍许不同的地方。

     

     

          

    作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 欢迎转载或分享,但请务必声明文章出处。 (新浪微博:tornadomeet,欢迎交流!)
  • 相关阅读:
    解决url传递过程中加号变空格的问题<转>
    windows下CEF3的关闭流程《转》
    mfc封装cef浏览器 关闭整个窗口程序得时候又重启mfc 应用的程序
    雷神免费资源
    LCA的 RMQ解法模版
    最新的js焦点图库
    whereis+whatis+man
    Anroid 手机助手 详细解析 概述(二)
    <c:forEach varStatus="status">中 varStatus的属性简介
    JBoss 系列四十九:JBoss 7/WildFly 中端口使用列表
  • 原文地址:https://www.cnblogs.com/tornadomeet/p/2614011.html
Copyright © 2011-2022 走看看