换种写法,一般用内部类:
private OnClickListener clicklistener =new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Button btn=(Button) v;
switch (btn.getId()) {
case R.id.button:
//点击后需要执行的的操作
break;
default:
break;
}
}
};
按钮监听改成: button.setOnClickListener( clicklistener);
07-16 21:45:19.197: E/AndroidRuntime(784): FATAL EXCEPTION: main
07-16 21:45:19.197: E/AndroidRuntime(784): java.lang.NullPointerException
07-16 21:45:19.197: E/AndroidRuntime(784): at com.example.sms.MainActivity$ButtonOnClickListener.onClick(MainActivity.java:41)
07-16 21:45:19.197: E/AndroidRuntime(784): at android.view.View.performClick(View.java:2408)
07-16 21:45:19.197: E/AndroidRuntime(784): at android.view.View$PerformClick.run(View.java:8816)
07-16 21:45:19.197: E/AndroidRuntime(784): at android.os.Handler.handleCallback(Handler.java:587)
07-16 21:45:19.197: E/AndroidRuntime(784): at android.os.Handler.dispatchMessage(Handler.java:92)
07-16 21:45:19.197: E/AndroidRuntime(784): at android.os.Looper.loop(Looper.java:123)
07-16 21:45:19.197: E/AndroidRuntime(784): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-16 21:45:19.197: E/AndroidRuntime(784): at java.lang.reflect.Method.invokeNative(Native Method)
07-16 21:45:19.197: E/AndroidRuntime(784): at java.lang.reflect.Method.invoke(Method.java:521)
07-16 21:45:19.197: E/AndroidRuntime(784): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-16 21:45:19.197: E/AndroidRuntime(784): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-16 21:45:19.197: E/AndroidRuntime(784): at dalvik.system.NativeStart.main(Native Method)
package com.example.sms;
import java.util.ArrayList;
import android.R.string;
import android.support.v7.app.ActionBarActivity;
import android.telephony.SmsManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText numberText;
private EditText contentText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
numberText = (EditText) this.findViewById(R.id.number);
contentText = (EditText) this.findViewById(R.id.content);
Button button=(Button) this.findViewById(R.id.button);
button.setOnClickListener(new ButtonOnClickListener());
}
private final class ButtonOnClickListener implements View.OnClickListener{
public void onClick(View v){
EditText getText = (EditText) findViewById(R.id.number);
String number = numberText.getText().toString();
EditText contentText = (EditText) findViewById(R.id.content);
String content = contentText.getText().toString();
SmsManager manager = SmsManager.getDefault();
ArrayList<String> texts = manager.divideMessage(content);
for(String text : texts){
manager.sendTextMessage(number, null, text, null, null);
}
Toast.makeText(MainActivity.this, R.string.success, Toast.LENGTH_LONG).show();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<string name="app_name">2短信发送器</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="number">请输入手机号</string>
<string name="content">请输入短信内容</string>
<string name="button">发送</string>
<string name="success">发送完成</string>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/number" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@+id/number" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/content" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minLines="3"
android:text="@+id/content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button"
android:id="@+id/button"
/>
错误提示41行代码有nullpointer异常。对照检查一下。
java.lang.NullPointerException,建议你单步调试一下,这样可以发现是哪一句引起的 java.lang.NullPointerException,然后再分析原因吧。
E/AndroidRuntime(784): java.lang.NullPointerException
你可以测试一下为什么会产生空指针异常
我照着教程对照了,应该没错呀!
1 你是要完成在一个文本框里写点东西,然后点击按钮发送到指定号码人么,大概步骤就是取得那个id的文本,
然后取得文本值,把这个值传递给号码人,按照一个协议吧,我忘记了,
2 作为一个初学者,要会使用debug,就是测试单步,就是有个小虫子样子的按钮,我没打开eclipse,不给你截图了,你先在onclick方法里,双击代码行左侧
空白区域,会出现一个断点,然后你就重新启动虚拟机,执行程序时候,会停止运行,进入到debug模式,就是在等你单步运行,看具体是哪里的值没取到
一般运行功能时候,会弹出对话框,问你要不要进入debug模式,点击yes即可;
你的错误是07-16 21:45:19.197: E/AndroidRuntime(784): at com.example.sms.MainActivity$ButtonOnClickListener.onClick(MainActivity.java:41)
41行代码处空值了,你仔细看看41行,祝你好运!累死我了。。。求采纳哦
// EditText getText = (EditText) findViewById(R.id.number);
String number = numberText.getText().toString();
// EditText contentText = (EditText) findViewById(R.id.content);
String content = contentText.getText().toString();
SmsManager manager = SmsManager.getDefault();
第二句被我注释掉是因为初始化的时候就拿到空的string,发短信会异常。
首先你有没有加上短信的权限?
其次,你按照你出错的locat,点击报错的信息,看ecliipse给你跳转到哪个语句,你贴出来看看
这是权限
双击第四个
双击后
你看清楚,你的Edittext中是:android:text=“@+id/number”而不是 android:id=“@+id/number”。。。。。。。。。。。。。。