强制关闭按后退按钮
问题描述:
,当我得到一个错误,如果我在Activitys 的一个按硬件后退按钮,我不能找出其中的错误在于 这里是我的代码:强制关闭按后退按钮
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class NoteScreen extends Activity {
/** Called when the activity is first created. */
private EditText mTitleText;
private EditText mBodyText;
private Long mRowId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.note_screen);
setTitle("Edit Note");
mTitleText = (EditText) findViewById(R.id.title);
mBodyText = (EditText) findViewById(R.id.note);
ImageButton acceptButton = (ImageButton) findViewById(R.id.accept);
mRowId = null;
Bundle extras = getIntent().getExtras();
if (extras != null) {
String title = extras.getString(NotesDbAdapter.KEY_TITLE);
String body = extras.getString(NotesDbAdapter.KEY_BODY);
mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
if (title != null) {
mTitleText.setText(title);
}
if (body != null) {
mBodyText.setText(body);
}
}
acceptButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Bundle bundle = new Bundle();
bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString());
bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString());
if (mRowId != null) {
bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId);
}
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
ImageButton cancelButton = (ImageButton) findViewById(R.id.cancel);
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(NoteScreen.this, MainActivity.class);
startActivity(i);
finish();
}
});
// TODO Auto-generated method stub
}
}
这是我的LogCat:
11-23 19:59:10.851: E/AndroidRuntime(1009): FATAL EXCEPTION: main
11-23 19:59:10.851: E/AndroidRuntime(1009): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {com.reekapps.simplenote/com.reekapps.simplenote.MainActivity}: java.lang.NullPointerException
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.ActivityThread.access$1100(ActivityThread.java:141)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.os.Handler.dispatchMessage(Handler.java:99)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.os.Looper.loop(Looper.java:137)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.ActivityThread.main(ActivityThread.java:5041)
11-23 19:59:10.851: E/AndroidRuntime(1009): at java.lang.reflect.Method.invokeNative(Native Method)
11-23 19:59:10.851: E/AndroidRuntime(1009): at java.lang.reflect.Method.invoke(Method.java:511)
11-23 19:59:10.851: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-23 19:59:10.851: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-23 19:59:10.851: E/AndroidRuntime(1009): at dalvik.system.NativeStart.main(Native Method)
11-23 19:59:10.851: E/AndroidRuntime(1009): Caused by: java.lang.NullPointerException
11-23 19:59:10.851: E/AndroidRuntime(1009): at com.reekapps.simplenote.MainActivity.onActivityResult(MainActivity.java:171)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.Activity.dispatchActivityResult(Activity.java:5293)
11-23 19:59:10.851: E/AndroidRuntime(1009): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
11-23 19:59:10.851: E/AndroidRuntime(1009): ... 11 more
11-23 19:59:43.861: E/Trace(1120): error opening trace file: No such file or directory (2)
有没有人看到错误?我不知道提前 感谢
编辑:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Bundle extras = intent.getExtras();
switch(requestCode) {
case ACTIVITY_CREATE:
String title = extras.getString(NotesDbAdapter.KEY_TITLE);
String body = extras.getString(NotesDbAdapter.KEY_BODY);
mDbHelper.createNote(title, body);
fillData();
break;
case ACTIVITY_EDIT:
Long rowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
if (rowId != null) {
String editTitle = extras.getString(NotesDbAdapter.KEY_TITLE);
String editBody = extras.getString(NotesDbAdapter.KEY_BODY);
mDbHelper.updateNote(rowId, editTitle, editBody);
}
fillData();
break;
}
}
我贴我的onActivityResult,也许是错误的地方在那里。
答
您开始此活动以获取结果,因此您需要在离开此活动时提供结果。尝试使用方法onBackPressed()
。
例如:
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
finish();
}
还要检查你onActivityResult
在MainActivity,也许你需要一些外部逻辑添加到它。
关于上次编辑:
你继续前进的resultCode
,不仅requestCode
像你现在要做的。 例如,你可以做水木清华这样的:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
Bundle extras = intent.getExtras();
switch(requestCode) {
case ACTIVITY_CREATE:
String title = extras.getString(NotesDbAdapter.KEY_TITLE);
String body = extras.getString(NotesDbAdapter.KEY_BODY);
mDbHelper.createNote(title, body);
fillData();
break;
case ACTIVITY_EDIT:
Long rowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
if (rowId != null) {
String editTitle = extras.getString(NotesDbAdapter.KEY_TITLE);
String editBody = extras.getString(NotesDbAdapter.KEY_BODY);
mDbHelper.updateNote(rowId, editTitle, editBody);
}
fillData();
break;
}
}
}
这是不是最好的方式,但我用你的代码帮助:)
祝你好运!
+0
谢谢,这工作。 – mind
是的我看到它:'由com.reekapps.simplenote.MainActivity.onActivityResult(MainActivity.java:171)产生的java.lang.NullPointerException' – keyser
@ᴋᴇʏsᴇʀ你赢了我1秒。 REEK应用程序,如果您需要更多帮助,则必须将您的onActivityResult方法也放在一边。 – gian1200
我现在发布了onActivityResult,请你检查一下吗? – mind