首页 > 解决方案 > Android:无法返回值

问题描述

我创建了一个简单的布局来从用户那里获取信息,并且我已经对其进行了 Java 编程以获取数据并将它们存储为 .JSON 格式。我把它当作一个字符串并将它们保存为 .JSON 格式。但是在返回时return jsonObject我得到一个错误。

这是代码:

public class MainActivity extends AppCompatActivity {

EditText firstname, lastname, username, mail_id, mobile_no, pass;
Button submit;

JSONObject jsonObject = new JSONObject();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String FILE_NAME = "Sample.json";


    firstname = (EditText) findViewById(R.id.firstname);
    lastname = (EditText) findViewById(R.id.lastname);
    username = (EditText) findViewById(R.id.username);
    mail_id = (EditText) findViewById(R.id.mail);
    mobile_no = (EditText) findViewById(R.id.phone);
    pass = (EditText) findViewById(R.id.password);
    submit = findViewById(R.id.submit);





    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            jsonformat();

            String userString = jsonObject.toString();

            File file = new File(MainActivity.this.getFilesDir(), FILE_NAME);
            FileWriter fileWriter;
            try {
                fileWriter = new FileWriter(file);
                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                bufferedWriter.write(userString);
                bufferedWriter.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NullPointerException e) {
                e.printStackTrace();
            }

            File file1 = new File(MainActivity.this.getFilesDir(), FILE_NAME);
            FileReader fileReader = null;
            try {
                fileReader = new FileReader(file1);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuilder stringBuilder = new StringBuilder();
            String line = null;
            try {
                line = bufferedReader.readLine();
                while (line != null) {
                    stringBuilder.append(line).append("\n");
                    line = bufferedReader.readLine();
                    bufferedReader.close();
                }

            } catch (IOException e) {
                e.printStackTrace();
            }

            // This responce will have Json Format String
            String responce = stringBuilder.toString();

        }
    });


}
public JSONObject jsonformat()
{
    try {
        jsonObject.put("fname", firstname); // seems that it's wrong.
        jsonObject.put("lname", lastname); // seems that it's wrong.
        jsonObject.put("uname", username); // seems that it's wrong.
        jsonObject.put("mail", mail_id); // seems that it's wrong.
        jsonObject.put("Phone Number", mobile_no); // seems that it's wrong.
        jsonObject.put("Password", pass); // seems that it's wrong.

        //return jsonObject; // The error -- You can't return jsonObject in here. onCreate method is void method.
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return jsonObject;
}

}

构建错误:

/home/sim/AndroidStudioProjects/Activity/app/src/main/java/com/example/activity                  /MainActivity.java:55: error: incompatible types: unexpected return value
        return jsonObject;
               ^

   The .JSON file is created as per the program in the directory. But doesn't contain any value in it. just some "id" has been printed.

   Dunno where  did i make mistake or missed logic. Comment my mistakes.



 

标签: javaandroidandroid-studioreturn-valuereturn-type

解决方案


我认为您的代码包含一些错误的逻辑。
首先,您不能返回 onCreate 方法。您应该使用单独的方法来返回对象。我认为您的代码不需要返回。

其次,您确实将“布局元素实例”放入 JSONObject。
我不明白你为什么这样做。

无论如何,我将您的 MainActivity 代码更改如下。因此,您可以在新的 MainActivity 代码中进行更改。

public class MainActivity extends AppCompatActivity {

    EditText firstname, lastname, username, mail_id, mobile_no, pass;
    Button submit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String FILE_NAME = "Sample.json";


        firstname = (EditText) findViewById(R.id.firstname);
        lastname = (EditText) findViewById(R.id.lastname);
        username = (EditText) findViewById(R.id.username);
        mail_id = (EditText) findViewById(R.id.mail);
        mobile_no = (EditText) findViewById(R.id.phone);
        pass = (EditText) findViewById(R.id.password);
        submit = findViewById(R.id.submit);

        submit.setOnClickListener(v -> {
            JSONObject jsonObject = jsonformat();
            String userString = jsonObject.toString();

            File file = new File(getFilesDir(), FILE_NAME);
            FileWriter fileWriter;
            try {
                fileWriter = new FileWriter(file);
                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                bufferedWriter.write(userString);
                bufferedWriter.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NullPointerException e) {
                e.printStackTrace();
            }

            File file1 = new File(this.getFilesDir(), FILE_NAME);
            FileReader fileReader = null;
            try {
                fileReader = new FileReader(file1);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuilder stringBuilder = new StringBuilder();
            String line = null;
            try {
                line = bufferedReader.readLine();
                while (line != null) {
                    stringBuilder.append(line).append("\n");
                    line = bufferedReader.readLine();
                    bufferedReader.close();
                }

            } catch (IOException e) {
                e.printStackTrace();
            }

            // This responce will have Json Format String
            String responce = stringBuilder.toString();

        });
    }

    public JSONObject jsonformat() {
       JSONObject jsonObject = new JSONObject();
       try {
           jsonObject.put("fname", firstname.getText().toString());
           jsonObject.put("lname", lastname.getText().toString());
           jsonObject.put("uname", username.getText().toString());
           jsonObject.put("mail", mail_id.getText().toString());
           jsonObject.put("Phone Number", mobile_no.getText().toString());
           jsonObject.put("Password", pass.getText().toString());
        } catch (JSONException e) {
           e.printStackTrace();
        }

        return jsonObject;
    }
}

推荐阅读