android - 将字符串从一个 Activity 发送到另一个 Activity

标签 android string android-activity crash

已编辑,以便让您了解最新情况。

感谢您的回答。都尝试过了,但这并没有解决问题。 字符串和名称正确。 (选择一个是我要发送的字符串,另一个是名称)。

我今天花了几个小时摆弄代码,但它仍然崩溃......(解决了一些错误)。

这来自 Activity 2:

// The on-click listener for all devices in the ListViews
private OnItemClickListener mDeviceClickListener = new OnItemClickListener() {
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {
        // Cancel discovery because it's costly and we're about to connect
        mBluetoothAdapter.cancelDiscovery();

        /*Send string to the other activity */
        String chosenone = ((TextView) v).getText().toString();
        Intent intent = new Intent();
        intent.putExtra("theotherdude", chosenone);
        toasttest(chosenone);

        /*To avoid it from going back with nothing*/
        if(chosenone != null){
            // Set result and finish this Activity
            setResult(Activity.RESULT_OK, intent);
            finish();
        }
    }
};

和 Activity 1:

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // Check which request we're responding to
    if (requestCode == MY_REQUEST) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            //String theotherdude = fromtheother.getString("theotherdude");
            Intent intent = getIntent();
            String id = intent.getStringExtra("theotherdude");

            // Get the device MAC address, which is the last 17 chars in the View
            String address = id.substring(id.length() - 17);
            String name = id.substring(0, id.length() - 17);

            otherDeviceName.setText(R.string.with + name);
            Toast.makeText(this, address, Toast.LENGTH_SHORT).show();
            }
    }
}

日志猫:

05-28 19:46:24.625: I/Process(19972): Sending signal. PID: 19972 SIG: 9
05-28 19:48:55.086: D/libEGL(20267): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
05-28 19:48:55.094: D/libEGL(20267): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
05-28 19:48:55.094: D/libEGL(20267): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
05-28 19:48:55.188: D/OpenGLRenderer(20267): Enabling debug mode 0
05-28 19:48:58.281: D/OpenGLRenderer(20267): Flushing caches (mode 0)
05-28 19:49:00.688: D/AndroidRuntime(20267): Shutting down VM
05-28 19:49:00.688: W/dalvikvm(20267): threadid=1: thread exiting with uncaught exception (group=0x40bec1f8)
05-28 19:49:00.688: E/AndroidRuntime(20267): FATAL EXCEPTION: main
05-28 19:49:00.688: E/AndroidRuntime(20267): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.andrecl.interapption/com.andrecl.interapption.MainActivity}: java.lang.NullPointerException
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2994)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3037)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.ActivityThread.access$1100(ActivityThread.java:128)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.os.Looper.loop(Looper.java:137)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.ActivityThread.main(ActivityThread.java:4514)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at java.lang.reflect.Method.invokeNative(Native Method)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at java.lang.reflect.Method.invoke(Method.java:511)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at dalvik.system.NativeStart.main(Native Method)
05-28 19:49:00.688: E/AndroidRuntime(20267): Caused by: java.lang.NullPointerException
05-28 19:49:00.688: E/AndroidRuntime(20267):    at com.andrecl.interapption.MainActivity.onActivityResult(MainActivity.java:113)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.Activity.dispatchActivityResult(Activity.java:4649)
05-28 19:49:00.688: E/AndroidRuntime(20267):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2990)
05-28 19:49:00.688: E/AndroidRuntime(20267):    ... 11 more
05-28 19:49:11.719: I/Process(20267): Sending signal. PID: 20267 SIG: 9

如果我从 Activity 1 中删除 getextras() 和 getstring() 行,它不会崩溃。问题可能在那里吗? 在我看来,它没有向主要 Activity 发送任何内容......

再次感谢,

最佳答案

您的字符串位于 Intent 数据中

public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/*Make sure we got the right device */
String EXTRA_DEVICE_ADDRESS = data.getStringExtra("theotherdude");

// Get the device MAC address, which is the last 17 chars in the View
String address = EXTRA_DEVICE_ADDRESS.substring(EXTRA_DEVICE_ADDRESS.length() - 17);
String name = EXTRA_DEVICE_ADDRESS.substring(0, EXTRA_DEVICE_ADDRESS.length() - 17);

otherDeviceName.setText(R.string.with + name);
Toast.makeText(this, address, Toast.LENGTH_SHORT).show(); 
}

关于android - 将字符串从一个 Activity 发送到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780087/

相关文章:

python - 比较 2 个 Python 列表的顺序

java - 应用程序恢复时 fragment 中的 getActivity null

android - 在包/应用程序中使用 android 框架中的 java 库

Android SQL - 记事本教程

Android Button 或 TextView Border 以编程方式不使用 setBackgroundDrawable 方法

python - 如何将 lambda 函数读取为字符串?

r - 如何编写在数值中包含前导零的 substr 版本(在 R 中)?

android - 如何检查电子邮件或手机是否已在 Firebase 中注册

android - LeftNavBar 在 Activity 顶部创建黑条

java - 如何从 View 类重复另一个类中的 Activity