首页 文章

应用程序在按下下一步按钮时使用Intent传递数据时崩溃(getStringExtra)[复制]

提问于
浏览
-2

这个问题在这里已有答案:

我想将所有数据5(EditText)从活动1移动到2

公共类MainActivity扩展Activity

private EditText fName_ET;
    private EditText lName_ET;
    private EditText phoneNum_ET;
    private EditText eMail_ET;
    private EditText deviceModel_ET;
    private EditText nameDevice_ET;
    private Button nextPage;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

       fName_ET = (EditText)findViewById(R.id.fName_ET);
       lName_ET = (EditText)findViewById(R.id.lName_ET);
       phoneNum_ET = (EditText)findViewById(R.id.phone_ET);
       eMail_ET = (EditText)findViewById(R.id.mail_ET);
       nameDevice_ET = (EditText)findViewById(R.id.name_device);
       deviceModel_ET = (EditText)findViewById(R.id.model_device);
       nextPage = (Button)findViewById(R.id.next_btn);

        nextPage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                String fName =  fName_ET.getText().toString().trim();
                String lName =  lName_ET.getText().toString().trim();
                String email = eMail_ET.getText().toString().trim();
                String phone = phoneNum_ET.getText().toString().trim();
                String nameDevice = nameDevice_ET.getText().toString().trim();
                String modelDevice =deviceModel_ET.getText().toString().trim();
                intent.putExtra("modelDevice",modelDevice);
                intent.putExtra("fName", fName);
                intent.putExtra("lName", lName);
                intent.putExtra("phone", phone);
                intent.putExtra("email", email);
                intent.putExtra("nameDevice", nameDevice);
                startActivity(intent);
            }
        });

公共类Main2Activity扩展Activity

{

 package com.example.eranp.cp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Main2Activity extends Activity {


    private EditText pro_device_det;
    private Button saveDataBase;
    private DatabaseReference databaseCustomer, databaseDevice, databaseProblem;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main3);

        databaseCustomer = FirebaseDatabase.getInstance().getReference("customers");
        databaseDevice = FirebaseDatabase.getInstance().getReference("device");
        databaseProblem = FirebaseDatabase.getInstance().getReference("problem");
        saveDataBase = (Button) findViewById(R.id.save_btn);


        pro_device_det = (EditText) findViewById(R.id.pro_device_det);
        Intent intent = getIntent();
        final String fName = intent.getStringExtra("fName");
        final String lName = intent.getStringExtra("lName");
        final String phone = intent.getStringExtra("phone");
        final String email = intent.getStringExtra("email");
        final String modelDevice = intent.getStringExtra("modelDevice");
        final String nameDevice = intent.getStringExtra("nameDevice");

        saveDataBase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String proDeviceDet = pro_device_det.getText().toString().trim();
                String shortProDeviceDet = string3Words(proDeviceDet);
                DateFormat df = new SimpleDateFormat("d MMM yyyy, HH:mm");
                String date = df.format(Calendar.getInstance().getTime());
                if (!TextUtils.isEmpty(proDeviceDet)) {
                    String id = databaseCustomer.push().getKey();
                    Customer customer = new Customer(id, fName, lName, email, phone);
                    databaseCustomer.child(id).setValue(customer);
                    Device device = new Device(id, nameDevice, modelDevice);
                    databaseDevice.child(id).setValue(device);
                    Problem problem = new Problem(id, date, proDeviceDet, 0, shortProDeviceDet);

                    //  Toast.makeText(this , "Customer added", Toast.LENGTH_LONG).show();
                } else {
                    //  Toast.makeText(this, "Please write on an empty cell", Toast.LENGTH_LONG).show();
                }

            }
        });


    }

    private String string3Words(String s) {
        String[] splitted = s.split("\\s+");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < splitted.length; i++) {
            sb.append(splitted[i]);
            if (i == 3) {
                break;
            }
        }
        String newS = sb.toString();
        return newS;
    }
}

我按下时记录:

向下VM 03-09 14:47:16.903 3476-3476 / com.example.eranp.clientpage E / AndroidRuntime:致命异常:主要过程:com.example.eranp.clientpage,PID:3476了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.eranp.clientpage / com.example.eranp.clientpage.Main2Activity}:java.lang.NullPointerException:尝试调用虚方法'void android.widget.Button.setOnClickListener(android.view.View) $ OnClickListener)'在android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2924)上的空对象引用,位于android.app.ActivityThread.-wrap14(ActivityThread)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)的.java)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1635)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6692)at com.android.internal.os.Zygo的java.lang.reflect.Method.invoke(Native Method) teInit $ MethodAndArgsCaller.run(ZygoteInit.java:1468)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)引起:java.lang.NullPointerException:尝试调用虚方法'void android.widget .Button.setOnClickListener(android.view.View $ OnClickListener)'在android.app.Activity.performCreate(Activity.java)的com.example.eranp.clientpage.Main2Activity.onCreate(Main2Activity.java:50)上的空对象引用上:6912)在android.app.Anstrumentation.callActivityOnCreate(Instrumentation.java:1126)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)at android Android.O.运行时android.os.Handler.dispatchMessage(Handler.java:102)上android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1635)的.app.ActivityThread.-wrap14(ActivityThread.java) .loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6692)java.lang.reflect.Method.invoke(本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1468)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

为什么当我按下应用程序崩溃的下一个按钮?谢谢你的帮忙!

2 回答

  • 1

    您正尝试在Main2Activity中的按钮上设置单击侦听器 . 很可能按钮不能从第二个活动的布局中膨胀,因为它不存在 .

    上在com.example.eranp.clientpage.Main2Activity.onCreate(Main2Activity.java:50)空对象引用> android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)”在

  • 0

    根据您的错误日志,您会因此而收到错误

    尝试在com.example.eranp.clientpage.Main2Activity.onCreate(Main2Activity.java:50)上的空对象引用上调用虚拟方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'

    saveDataBase = (Button) findViewById(R.id.save_btn);
    saveDataBase.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                 // code...
                }
    });
    

    检查天气按钮ID是否正确,是否与活动的布局相同 .

相关问题