Android开发关于Activity用bundle传值问题

freedragonle 2012-02-11 01:26:40
第一个Activity:
package com.Adr.work3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Adr3Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.OK);
button.setOnClickListener(myname);
}

private OnClickListener myname = new OnClickListener() {

@Override
public void onClick(View v) {
EditText inname = (EditText) findViewById(R.id.name);

Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("NAME", inname.getText().toString());
intent.putExtras(bundle);
intent.setClass(Adr3Activity.this, Welcome.class);
startActivity(intent);
}

};
}

第二个Activity

package com.Adr.work3;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Welcome extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
TextView receivename=(TextView) findViewById(R.id.welcome_name);
Bundle bundle=this.getIntent().getExtras();
String name=bundle.getString("NAME");
receivename.setText(name);
}
}


错误报告:
02-11 05:17:46.404: E/AndroidRuntime(563): FATAL EXCEPTION: main
02-11 05:17:46.404: E/AndroidRuntime(563): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Adr.work3/com.Adr.work3.Welcome}: java.lang.NullPointerException
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.os.Handler.dispatchMessage(Handler.java:99)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.os.Looper.loop(Looper.java:137)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-11 05:17:46.404: E/AndroidRuntime(563): at java.lang.reflect.Method.invokeNative(Native Method)
02-11 05:17:46.404: E/AndroidRuntime(563): at java.lang.reflect.Method.invoke(Method.java:511)
02-11 05:17:46.404: E/AndroidRuntime(563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-11 05:17:46.404: E/AndroidRuntime(563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-11 05:17:46.404: E/AndroidRuntime(563): at dalvik.system.NativeStart.main(Native Method)
02-11 05:17:46.404: E/AndroidRuntime(563): Caused by: java.lang.NullPointerException
02-11 05:17:46.404: E/AndroidRuntime(563): at com.Adr.work3.Welcome.onCreate(Welcome.java:16)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.Activity.performCreate(Activity.java:4465)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-11 05:17:46.404: E/AndroidRuntime(563): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-11 05:17:46.404: E/AndroidRuntime(563): ... 11 more

感觉是第二个Activity的receivename.setText(name)一直报错...这句注销掉可以运行...
...全文
386 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
b87936260 2012-02-27
  • 打赏
  • 举报
回复
receivename.setText(name);
name为空
第一个窗体没有输入东西就直接点按钮了吧
stardust_oak 2012-02-12
  • 打赏
  • 举报
回复
没楼主的代码测试了,没出现楼主所说的问题,这是一个很简单的activity直接的传值,小细节上查一下,
应该没什么问题的,
freedragonle 2012-02-12
  • 打赏
  • 举报
回复


package com.Adr.work3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Adr3Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.OK);

button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
EditText inname = (EditText) findViewById(R.id.name);

Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("NAME", inname.getText().toString());
intent.putExtras(bundle);
intent.setClass(Adr3Activity.this, Welcome.class);
startActivity(intent);
}
});
}
}

这是第一个修改后的,还是不行,错误还是提示第二个
receivename.setText(name);
这句空指针。
第一个layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请输入内容"
/>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>
<Button
android:id="@+id/OK"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="OK"
/>
</LinearLayout>

第二个layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:name="@+id/welcome_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>
xiaodongqiao 2012-02-11
  • 打赏
  • 举报
回复
错在第一个activity,监听器内部响应事件写错了
可以改为 button.setOnClickListener(new onClickListener(){


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
Bundle bundle=new Bundle();
EditText edite=(EditText)findViewById(R.id.ok);
bundle.putString("NAME",edite.getText().toString());
intent.setClass(Adr3Activity.this, Second.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
//程序思路是这样的:程序开始对第一个activity进行初始化,但就是页面而言第一个创建时没有错误,初始化第二个activity需要第一个activity传入的事件,第一个由于错误没有传入,导致第二个activity产生空指针异常
danielinbiti 2012-02-11
  • 打赏
  • 举报
回复
报错在receivename.setText这行,你看看是不是控件没获取到

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧