刚开始学写程序,所以有些代码是之前的,比如如何在页面上显示一句话之类的。
现在程序有两个按钮,
1. 转换文字-:按下后,当前页面的两行文字会调换位置,然后程序会转向另外一个页面(异常终止出现在这个按钮上)
2. 计算- 按下该按钮之前需要在编辑框中输入一个数字,然后按下按钮,程序会转向第二个页面
3. 在第二个页面中有两个按钮:
(1)转换文字 - 和<1.>的功能是一样的,只是这个不对文字进行调转,直接回到第一个页面;
(2)显示结果 - 点击该按钮后,会在该页面的左上角显示在第一个页面的传递过来的数据。现在的状态:
(1)主页面中,在编辑框中输入数字,按下 计算 按钮,程序正常转入第二个页面,这时按下 显示结果 按钮可正常显示文字,按下 当前页面的 转换文字 按钮可以正常回到主页面(第一个页面)
(2)主页面中,直接按下 转换文字 按钮,文字调转后,程序异常退出。 下面是代码:
////////////////////////////////////AndroidManifest.xml///////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hello"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="14" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.hello.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="SecondActivity"
android:label="SecondActivity">
</activity>
</application></manifest>
////////////////////////////////////MainActivity.java////////////////////////////////////////
package com.example.hello;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.util.DisplayMetrics;
import android.widget.TextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.content.Intent;public class MainActivity extends Activity {
//添加一个文本控件 需要在activity_main中添加一个相应的<TextView>标签,
private TextView mTextView01, mTextView02; private Button mButton01, mButton02;
private Button calculate;
private RadioButton checked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//和TextView标签中比较常用的查找xml中id的函数,以及单独设置字符串的重载函数(setText)
mTextView01 = (TextView) this.findViewById(R.id.mTextView01);
mTextView01.setText(R.string.welcome);
//打开资源文件的一种方法DOM(应该是吧)
final Resources resources = this.getBaseContext().getResources();
Drawable darw = resources.getDrawable(R.drawable.white);
mTextView01.setBackgroundDrawable(darw);
//第二个textView标签
mTextView02 = (TextView) this.findViewById(R.id.mTextView02);
mTextView02.setText(R.string.test_link);
//使用自带的color类定义文本以及背景颜色
mTextView02.setBackgroundColor(Color.YELLOW);
mTextView02.setTextColor(Color.GREEN);
//必须引用 android.util.DisplayMetrics;*/
DisplayMetrics dw = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dw); //获取 mTextView02中的字符串,动态更改为屏幕分辨率的值*/
CharSequence str01 = getString(R.string.test_link);
str01 = "这是我手机屏幕的分辨率:" + dw.widthPixels + " " + dw.heightPixels;
mTextView02.setText(str01);
//添加一个按钮*//////////////////出错的是这个按钮(主页面的 转换文字 按钮)
mButton01 = (Button) this.findViewById(R.id.transChar);
mButton01.setOnClickListener(
new OnClickListener() {
public void onClick(View v)
{
mTextView01.setText(R.string.test_link);
mTextView02.setText(R.string.welcome);
//layout 页面转换
//jumptoLayout2();
// 活动事件转换,new 一个Intent, 并指定一个意向的class(类)
Intent intnt = new Intent();
intnt.setClass(MainActivity.this, SecondActivity.class);
//执行
startActivity(intnt);
/*
* 此行表示程序在转换时,该Activity已经运行完毕,所以在点击返回键时不会回到之前的页面,而是直接退出。如果想
* 让程序在按返回键时退回到原先的页面可以注释掉这句话,或者就不要写出来。
*/
MainActivity.this.finish();
}
}
);
//将数据从一个Activity 传入另一个Activity
calculate = (Button) this.findViewById(R.id.calculate);
calculate.setOnClickListener(
new OnClickListener() {
public void onClick( View v) {
//取得输入的身高
EditText et = (EditText) findViewById(R.id.editText1);
double height = Double.parseDouble(et.getText().toString());
//检查单选框
String sex="";
checked = (RadioButton) findViewById(R.id.Man);
if( checked.isChecked())
sex="M";
else
sex="F";
//利用Bundle封装数据
Bundle bundle = new Bundle();
bundle.putDouble("height", height);
bundle.putString("Sex", sex);
//准备转向另一个Activity
Intent SecndActivity = new Intent();
SecndActivity.putExtras(bundle);
SecndActivity.setClass(MainActivity.this, SecondActivity.class);
startActivity(SecndActivity);
}
}
);
}
//页面跳转
public void jumptoLayout2() {
setContentView(R.layout.layout2);
mButton02 = (Button) this.findViewById(R.id.Trans2);
mButton02.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
mTextView01.setText(R.string.welcome);
mTextView02.setText(R.string.test_link);
jumptoLayout1(); }
}
);
}
public void jumptoLayout1() {
setContentView(R.layout.activity_main);
mButton01 = (Button) this.findViewById(R.id.transChar);
mButton01.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
jumptoLayout2();
mTextView01.setText(R.string.test_link);
mTextView02.setText(R.string.welcome);
}
}
);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}/////////////////////////////////////////////SecondActivity.java///////////////////////////////
package com.example.hello;import java.text.NumberFormat;
import java.text.DecimalFormat;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.Intent;
import android.widget.TextView;
public class SecondActivity extends Activity{
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout2);
Button btn2;
Button DisplayResult;
final TextView DisplayBMI;
btn2 = (Button) this.findViewById(R.id.Trans2);
btn2.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
// new 一个 Intent,并指定一个意向的class(类)
Intent intnt = new Intent();
intnt.setClass(SecondActivity.this, MainActivity.class);
//执行
startActivity(intnt);
/*
* 此行表示程序在转换时,该Activity已经运行完毕,所以在点击返回键时不会回到之前的页面,而是直接退出。如果想
* 让程序在按返回键时退回到原先的页面可以注释掉这句话,或者就不要写出来。
*/
SecondActivity.this.finish();
}
}
);
//取出数据
Bundle bundle = this.getIntent().getExtras();
final double height = bundle.getDouble("height");
final String sex = bundle.getString("Sex");
//获取控件句柄
DisplayBMI = (TextView) this.findViewById(R.id.DisplayBMI);
DisplayResult = (Button) this.findViewById(R.id.Display);
DisplayResult.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
//点击按钮显示结果
NumberFormat nf = new DecimalFormat("0.00");
String s = "你是一位"+getSex(sex)+",\n"+
"你的身高为:"+height+",\n"+
"你的体重为:"+nf.format(getWeight(sex, height));
DisplayBMI.setText(s);
}
}
);
}
//判断性别
public String getSex(String sex) {
String sexText="";
if( sex == "M")
sexText = this.getString(R.string.Man);
else sexText = this.getString(R.string.Woman);
return sexText;
}
//计算体重
public double getWeight( String sex, double high) {
if( getSex(sex) == this.getString(R.id.Man) )
return (high-80) *0.7;
else return (high-60) *0.6;
}
}
现在程序有两个按钮,
1. 转换文字-:按下后,当前页面的两行文字会调换位置,然后程序会转向另外一个页面(异常终止出现在这个按钮上)
2. 计算- 按下该按钮之前需要在编辑框中输入一个数字,然后按下按钮,程序会转向第二个页面
3. 在第二个页面中有两个按钮:
(1)转换文字 - 和<1.>的功能是一样的,只是这个不对文字进行调转,直接回到第一个页面;
(2)显示结果 - 点击该按钮后,会在该页面的左上角显示在第一个页面的传递过来的数据。现在的状态:
(1)主页面中,在编辑框中输入数字,按下 计算 按钮,程序正常转入第二个页面,这时按下 显示结果 按钮可正常显示文字,按下 当前页面的 转换文字 按钮可以正常回到主页面(第一个页面)
(2)主页面中,直接按下 转换文字 按钮,文字调转后,程序异常退出。 下面是代码:
////////////////////////////////////AndroidManifest.xml///////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hello"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="14" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.hello.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="SecondActivity"
android:label="SecondActivity">
</activity>
</application></manifest>
////////////////////////////////////MainActivity.java////////////////////////////////////////
package com.example.hello;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.util.DisplayMetrics;
import android.widget.TextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.content.Intent;public class MainActivity extends Activity {
//添加一个文本控件 需要在activity_main中添加一个相应的<TextView>标签,
private TextView mTextView01, mTextView02; private Button mButton01, mButton02;
private Button calculate;
private RadioButton checked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//和TextView标签中比较常用的查找xml中id的函数,以及单独设置字符串的重载函数(setText)
mTextView01 = (TextView) this.findViewById(R.id.mTextView01);
mTextView01.setText(R.string.welcome);
//打开资源文件的一种方法DOM(应该是吧)
final Resources resources = this.getBaseContext().getResources();
Drawable darw = resources.getDrawable(R.drawable.white);
mTextView01.setBackgroundDrawable(darw);
//第二个textView标签
mTextView02 = (TextView) this.findViewById(R.id.mTextView02);
mTextView02.setText(R.string.test_link);
//使用自带的color类定义文本以及背景颜色
mTextView02.setBackgroundColor(Color.YELLOW);
mTextView02.setTextColor(Color.GREEN);
//必须引用 android.util.DisplayMetrics;*/
DisplayMetrics dw = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dw); //获取 mTextView02中的字符串,动态更改为屏幕分辨率的值*/
CharSequence str01 = getString(R.string.test_link);
str01 = "这是我手机屏幕的分辨率:" + dw.widthPixels + " " + dw.heightPixels;
mTextView02.setText(str01);
//添加一个按钮*//////////////////出错的是这个按钮(主页面的 转换文字 按钮)
mButton01 = (Button) this.findViewById(R.id.transChar);
mButton01.setOnClickListener(
new OnClickListener() {
public void onClick(View v)
{
mTextView01.setText(R.string.test_link);
mTextView02.setText(R.string.welcome);
//layout 页面转换
//jumptoLayout2();
// 活动事件转换,new 一个Intent, 并指定一个意向的class(类)
Intent intnt = new Intent();
intnt.setClass(MainActivity.this, SecondActivity.class);
//执行
startActivity(intnt);
/*
* 此行表示程序在转换时,该Activity已经运行完毕,所以在点击返回键时不会回到之前的页面,而是直接退出。如果想
* 让程序在按返回键时退回到原先的页面可以注释掉这句话,或者就不要写出来。
*/
MainActivity.this.finish();
}
}
);
//将数据从一个Activity 传入另一个Activity
calculate = (Button) this.findViewById(R.id.calculate);
calculate.setOnClickListener(
new OnClickListener() {
public void onClick( View v) {
//取得输入的身高
EditText et = (EditText) findViewById(R.id.editText1);
double height = Double.parseDouble(et.getText().toString());
//检查单选框
String sex="";
checked = (RadioButton) findViewById(R.id.Man);
if( checked.isChecked())
sex="M";
else
sex="F";
//利用Bundle封装数据
Bundle bundle = new Bundle();
bundle.putDouble("height", height);
bundle.putString("Sex", sex);
//准备转向另一个Activity
Intent SecndActivity = new Intent();
SecndActivity.putExtras(bundle);
SecndActivity.setClass(MainActivity.this, SecondActivity.class);
startActivity(SecndActivity);
}
}
);
}
//页面跳转
public void jumptoLayout2() {
setContentView(R.layout.layout2);
mButton02 = (Button) this.findViewById(R.id.Trans2);
mButton02.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
mTextView01.setText(R.string.welcome);
mTextView02.setText(R.string.test_link);
jumptoLayout1(); }
}
);
}
public void jumptoLayout1() {
setContentView(R.layout.activity_main);
mButton01 = (Button) this.findViewById(R.id.transChar);
mButton01.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
jumptoLayout2();
mTextView01.setText(R.string.test_link);
mTextView02.setText(R.string.welcome);
}
}
);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}/////////////////////////////////////////////SecondActivity.java///////////////////////////////
package com.example.hello;import java.text.NumberFormat;
import java.text.DecimalFormat;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.Intent;
import android.widget.TextView;
public class SecondActivity extends Activity{
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout2);
Button btn2;
Button DisplayResult;
final TextView DisplayBMI;
btn2 = (Button) this.findViewById(R.id.Trans2);
btn2.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
// new 一个 Intent,并指定一个意向的class(类)
Intent intnt = new Intent();
intnt.setClass(SecondActivity.this, MainActivity.class);
//执行
startActivity(intnt);
/*
* 此行表示程序在转换时,该Activity已经运行完毕,所以在点击返回键时不会回到之前的页面,而是直接退出。如果想
* 让程序在按返回键时退回到原先的页面可以注释掉这句话,或者就不要写出来。
*/
SecondActivity.this.finish();
}
}
);
//取出数据
Bundle bundle = this.getIntent().getExtras();
final double height = bundle.getDouble("height");
final String sex = bundle.getString("Sex");
//获取控件句柄
DisplayBMI = (TextView) this.findViewById(R.id.DisplayBMI);
DisplayResult = (Button) this.findViewById(R.id.Display);
DisplayResult.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
//点击按钮显示结果
NumberFormat nf = new DecimalFormat("0.00");
String s = "你是一位"+getSex(sex)+",\n"+
"你的身高为:"+height+",\n"+
"你的体重为:"+nf.format(getWeight(sex, height));
DisplayBMI.setText(s);
}
}
);
}
//判断性别
public String getSex(String sex) {
String sexText="";
if( sex == "M")
sexText = this.getString(R.string.Man);
else sexText = this.getString(R.string.Woman);
return sexText;
}
//计算体重
public double getWeight( String sex, double high) {
if( getSex(sex) == this.getString(R.id.Man) )
return (high-80) *0.7;
else return (high-60) *0.6;
}
}
解决方案 »
- 【问】手机如何和zigbee设备通讯?
- 启动模拟器时报错:Could not open
- 如何用RotateAnimation实现绕Y轴旋转
- 想做个视频播放器,不知如何实现求高手指点下
- Android Sculpture
- Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- 用什么组件来显示数据库中的多条纪录?
- 为什么这里添加按钮的监听器会出错!!!!求教~~~
- 手机跨平台开发用什么语言比较好 C++ 还是 erlang? C++ 和erlang 有什么 区别?谢谢!哪个做跨平台简单快?
- 布局修改就保存
- Android 怎么能取出sdcard下的含有图片的文件夹
- 做瀑布流bitmap内存溢出问题怎么解决
<activity
android:name=".SecondActivity"
android:label="SecondActivity">
</activity>要在SecondActivity加一点
终止也只给个Unfortunately, hello has stoped
01-25 22:42:48.873: E/AndroidRuntime(873): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hello/com.example.hello.SecondActivity}: java.lang.NullPointerException
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.os.Handler.dispatchMessage(Handler.java:99)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.os.Looper.loop(Looper.java:137)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.ActivityThread.main(ActivityThread.java:5039)
01-25 22:42:48.873: E/AndroidRuntime(873): at java.lang.reflect.Method.invokeNative(Native Method)
01-25 22:42:48.873: E/AndroidRuntime(873): at java.lang.reflect.Method.invoke(Method.java:511)
01-25 22:42:48.873: E/AndroidRuntime(873): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-25 22:42:48.873: E/AndroidRuntime(873): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-25 22:42:48.873: E/AndroidRuntime(873): at dalvik.system.NativeStart.main(Native Method)
01-25 22:42:48.873: E/AndroidRuntime(873): Caused by: java.lang.NullPointerException
01-25 22:42:48.873: E/AndroidRuntime(873): at com.example.hello.SecondActivity.onCreate(SecondActivity.java:44)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.Activity.performCreate(Activity.java:5104)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-25 22:42:48.873: E/AndroidRuntime(873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-25 22:42:48.873: E/AndroidRuntime(873): ... 11 more
十分感谢,我把获取数据的几行代码放到了DisplayResult按钮的里面, 转换文字 按钮的跳转 成功了。