待会儿将下面的话语重构一下:
今天的一个Android代码书写收获是:写完一部分核心代码,就运行一次,yes!
如果有语法错误,我是能直接看出来的,但特么要是逻辑错呢?长时间不运行,一旦出错了,
那就卧槽!等死吧!
所以啊,一旦用手头E430C这个本来写Android代码,记住一定要:书写一段核心demo,就立马运行,
一是看效果,二是是否出现程序运行失败的错误,有的话立马退回去改!!
嗯,然后接下来是MainActivity类的demo:
今天的一个Android代码书写收获是:写完一部分核心代码,就运行一次,yes!
如果有语法错误,我是能直接看出来的,但特么要是逻辑错呢?长时间不运行,一旦出错了,
那就卧槽!等死吧!
所以啊,一旦用手头E430C这个本来写Android代码,记住一定要:书写一段核心demo,就立马运行,
一是看效果,二是是否出现程序运行失败的错误,有的话立马退回去改!!
计算器:
1、显示通过LinearLayout布局管理器布局
2、在预先设计好的位置填充各个View组件,
注:要控制好layout_height以及layout_width的填充方式,
wrap_content 包裹内容的填充方式
fill_parent 填充满撑开父辈组件的方式
一旦fill_parent的填充方式使用不当,即会造成另一个布局被抵开,于屏幕中不予显示
3、标记号各个组件的ID
4、在MainActivity中定义对应于res.layout中的各个组件的相应变量,并通过findViewById()方法获取对象
5、构建新的事件响应类(如subClickListener)去继承(implements)OnClickListener(),
eg: private subClickListener implements OnClickListener()
同时,重写OnClickListener()类中的onClick()方法,即在onClick()方法中书写具体的响应操作
6、将(步骤5)所述的相应类绑定在需要监听的按钮上。
eg: this.but.setOnClickListener(new subClickListener());
7、重复5、6步骤\
下面首先是res->layout->activity_main.xml文件的demo:
<LinearLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="欢迎来到么么哒计算器~ ^_^s" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/mytxt1"
android:layout_width= "wrap_content"
android:layout_height="wrap_content"
android:text="8"
/>
<TextView
android:id="@+id/myope"
android:layout_height= "wrap_content"
android:layout_width="wrap_content"
android:text="o"
/>
<EditText
android:id="@+id/mytxt2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="4"
/>
<TextView
android:id="@+id/mysig"
android:layout_width = "wrap_content"
android:layout_height="wrap_content"
android:text=" = "
/>
<EditText
android:id="@+id/mytxt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/mybutadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
/>
<Button
android:id="@+id/mybutsub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
/>
<Button
android:id="@+id/mybutmul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
/>
<Button
android:id="@+id/mybutdiv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<Button
android:id="@+id/mybut1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
/>
<Button
android:id="@+id/mybut2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
/>
<Button
android:id="@+id/mybut3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
/>
<Button
android:id="@+id/mybut4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<Button
android:id="@+id/mybut5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
/>
<Button
android:id="@+id/mybut6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6"
/>
<Button
android:id="@+id/mybut7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7"
/>
<Button
android:id="@+id/mybut8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<Button
android:id="@+id/mybut9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
/>
<Button
android:id="@+id/mybut0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
/>
<Button
android:id="@+id/mybutcle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clear"
/>
<Button
android:id="@+id/mybutequ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="="
/>
</LinearLayout>
</LinearLayout>
嗯,然后接下来是MainActivity类的demo:
package com.example.jisuanqi;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
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 {
//gloable var
//现在要增加全局变量了
int n1 = 0;
int n2 = 0;
String sig = null;
//定义对应于相应组件的变量
private EditText txt1 = null;
private TextView ope = null;
private EditText txt2 = null;
private EditText txt3 = null;
private Button butadd = null;
private Button butsub = null;
private Button butmul = null;
private Button butdiv = null;
private Button but1 = null;
private Button but2 = null;
private Button but3 = null;
private Button but4 = null;
private Button but5 = null;
private Button but6 = null;
private Button but7 = null;
private Button but8 = null;
private Button but9 = null;
private Button but0 = null;
private Button butcle = null;
private Button butequ = null;
//程序主体枝干从这里开始:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.txt1 = (EditText) super.findViewById(R.id.mytxt1);
//注意:此处如果强制类转换,将EditText转换成TextView是不会报错的
this.ope = (TextView) super.findViewById(R.id.myope);
this.txt2 =(EditText) super.findViewById(R.id.mytxt2);
this.txt3 =(EditText) super.findViewById(R.id.mytxt3);
//下面是开始给符号进行关联组件
this.butadd = (Button) super.findViewById(R.id.mybutadd);
this.butsub = (Button) super.findViewById(R.id.mybutsub);
this.butmul = (Button) super.findViewById(R.id.mybutmul);
this.butdiv = (Button) super.findViewById(R.id.mybutdiv);
//下面是数字按钮
this.but1 = (Button) super.findViewById(R.id.mybut1);
this.but2 = (Button) super.findViewById(R.id.mybut2);
this.but3 = (Button) super.findViewById(R.id.mybut3);
this.but4 = (Button) super.findViewById(R.id.mybut4);
this.but5 = (Button) super.findViewById(R.id.mybut5);
this.but6 = (Button) super.findViewById(R.id.mybut6);
this.but7 = (Button) super.findViewById(R.id.mybut7);
this.but8 = (Button) super.findViewById(R.id.mybut8);
this.but9 = (Button) super.findViewById(R.id.mybut9);
this.but0 = (Button) super.findViewById(R.id.mybut0);
//最下一排按钮的组件关联
this.butcle = (Button) super.findViewById(R.id.mybutcle);
this.butequ = (Button) super.findViewById(R.id.mybutequ);
//-------------------------
//好,现在开始对组件进项绑定监听
//-------------------------
//操作符的绑定
this.butadd.setOnClickListener(new addClickListener());
this.butsub.setOnClickListener(new subClickListener());
this.butmul.setOnClickListener(new mulClickListener());
this.butdiv.setOnClickListener(new divClickListener());
//数字按钮的绑定
this.but1.setOnClickListener(new but1ClickListener());
this.but2.setOnClickListener(new but2ClickListener());
this.but3.setOnClickListener(new but3ClickListener());
this.but4.setOnClickListener(new but4ClickListener());
this.but5.setOnClickListener(new but5ClickListener());
this.but6.setOnClickListener(new but6ClickListener());
this.but7.setOnClickListener(new but7ClickListener());
this.but8.setOnClickListener(new but8ClickListener());
this.but9.setOnClickListener(new but9ClickListener());
this.but0.setOnClickListener(new but0ClickListener());
//清除键的绑定
this.butcle.setOnClickListener(new clearClickListener());
//最终大结局来啦!!
//“等于”号的绑定
this.butequ.setOnClickListener(new equClickListener());
}
//程序主体枝干结束
//开始定义响应事件中的运算符操作
private class addClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
sig = "+";
//你就zuo嘛、是不是作死在这里了
MainActivity.this.ope.setText(" " + sig + " ");
}
}
private class subClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
sig = "-";
MainActivity.this.ope.setText(" " + sig + " ");
}
}
private class mulClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
sig = "*";
MainActivity.this.ope.setText(" " + sig + " ");
}
}
private class divClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
sig = "/";
MainActivity.this.ope.setText(" " + sig + " ");
}
}
//开始响应数字按钮
private class but1ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 1;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 1;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but2ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 2;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 2;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but3ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 3;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 3;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but4ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 4;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 4;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but5ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 5;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 5;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but6ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 6;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 6;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but7ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 7;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 7;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but8ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 8;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 8;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but9ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 9;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 9;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class but0ClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = n1 * 10 + 0;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = n2 * 10 + 0;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
//数字键的监听到此结束
//清除键的监听
private class clearClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.ope.getText().toString().equals("o"))
{
n1 = 0;
MainActivity.this.txt1.setText(String.valueOf(n1));
}
else{
n2 = 0;
MainActivity.this.txt2.setText(String.valueOf(n2));
}
}
}
private class equClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
//MainActivity.this.txt3.setText(String.valueOf(n1+n2));
//好了,现在知道出错出在这里了
if(MainActivity.this.ope.getText().toString().equals(" " + "+" + " "))
{
//n1 = 0;
MainActivity.this.txt3.setText(String.valueOf(n1+n2));
}
if(MainActivity.this.ope.getText().toString().equals(" " + "-" + " "))
{
//n1 = 0;
MainActivity.this.txt3.setText(String.valueOf(n1-n2));
}
if(MainActivity.this.ope.getText().toString().equals(" " + "*" + " "))
{
//n1 = 0;
MainActivity.this.txt3.setText(String.valueOf(n1*n2));
}
if(MainActivity.this.ope.getText().toString().equals(" " + "/" + " "))
{
//n1 = 0;
MainActivity.this.txt3.setText(String.valueOf(n1/n2));
}
/*
if(MainActivity.this.ope.getText().toString().equals("+")){
MainActivity.this.txt3.setText(String.valueOf(n1+n2));
}
if(MainActivity.this.ope.getText().toString().equals("-")){
MainActivity.this.txt3.setText(String.valueOf(n1-n2));
}
*/
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}