java - 不幸的是,<应用程序名称>已停止 "String data = sharedData.getText().toString();"

标签 java android nullpointerexception

大家早上好!

简单的问题,当按下程序中的“保存”按钮时,我正在使用 Java 中的文件输入/输出将数据保存到字符串中。但每当我点击“保存”按钮时,程序就会停止工作。

我对 Java 和 Android 也很陌生,所以我还不能真正判断问题是针对我的代码还是更普遍的问题,这就是为什么我发布这个问题,即使还有很多其他问题类似。

使用注释“//、/*、/”,我能够在代码中找到导致程序停止工作的行,我通过放置“”来强调这一行在它的开头和结尾,这样你就不会在寻找它时遇到麻烦。我只是想知道为什么这条线导致我的应用程序停止,如果可能的话,如何修复它。

谢谢大家。我们将非常感谢您的帮助。

请看一下我的代码 fragment :

public class MainActivity extends ActionBarActivity {

    EditText sharedData;
    FileOutputStream fos;
    String FILENAME = "InternalString";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity);

        Button save = (Button) findViewById(R.id.btn_save);
        save.setOnClickListener(onSave);

        ListView list = (ListView) findViewById(R.id.restaurants);
        adapter = new RestaurantAdapter();
        list.setAdapter(adapter);
        }

    public View.OnClickListener onSave = new View.OnClickListener (){


        @Override
        public void onClick(View v) {

            Info r = new Info();

            EditText name = (EditText) findViewById(R.id.field_name);
            EditText address = (EditText) findViewById(R.id.field_address);
            TextView total= (TextView)findViewById(R.id.total);
            RadioGroup types = (RadioGroup) findViewById(R.id.rgrp_types);
            switch (types.getCheckedRadioButtonId()) {
            case R.id.rbtn_sit_down:
                r.setType("sit_down");
                break;
            case R.id.rbtn_take_out:
                r.setType("take_out");
                break;
            }

            r.setName(name.getText().toString());
            r.setAddress(address.getText().toString());
            r.setTotal(total.getText().toString());

                String data = sharedData.getText().toString();*** <----- This line causes it to stop running

            try {
            fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
            fos.write(data.getBytes());
            fos.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            String collected = null;
            FileInputStream fis = null;

            try {
                fis = openFileInput(FILENAME);
                byte[] dataArray = new byte[fis.available()];
                while (fis.read(dataArray) != -1){
                collected = new String(dataArray);
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    fis.close();
                    total.setText("Balance Total: " + collected +"Php");
            }   catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }
            }
            Log.d("FoodTripActivity", "Name: " + r.getName() + "Address: " + r.getAddress() + "Type: " + r.getType());
            adapter.add(r);

        }               
    };
}

最佳答案

sharedData 未初始化。您需要在调用getText之前对其进行初始化。

您只声明了它EditText sharedData;

sharedData =(EditText) findViewById(R.id.idforshareddata);
String data = sharedData.getText().toString();

关于java - 不幸的是,<应用程序名称>已停止 "String data = sharedData.getText().toString();",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354926/

相关文章:

java - 在没有代码的情况下持续获取 NullPointerException

java - int 类型的最大十进制文字是 2147483648 还是 2147483647?

java - 惰性一对一 Spring JPA 和构建 "dynamic"JSON

java - Spring - 如何选择依赖bean的属性?

Android:无法调用带有视频的图库

android - 从当前位置到已知位置的谷歌方向路线

java - 如何优化我的 java 应用程序中的代码

android - 如何在不显示的情况下使用 OpenGL?

java - 如何将InputStream转换为字符串?

java - 将一组文本按钮添加到网格布局