Android 在内存中存储用户输入数据

Android 在内存中存储用户输入数据,android,android-layout,android-emulator,android-manifest,Android,Android Layout,Android Emulator,Android Manifest,我正在尝试创建一个简单的应用程序,它基本上是一个跟踪程序,可以跟踪大学生每门学科的课程数量。该应用程序针对我的大学时间表。想法是我有3个活动:main.java、Sublist.java和editcrap.java。java充当启动屏幕并启动子列表活动 在子列表活动中,用户显示的布局显示(文本视图)(按钮)(计数器文本视图)彼此水平。其中有7个垂直对齐 单击菜单按钮时,会出现:(编辑主题参数),单击该按钮会将用户带到editcrap.java活动,在相应的EditText框中进行用户输入,询问子

我正在尝试创建一个简单的应用程序,它基本上是一个跟踪程序,可以跟踪大学生每门学科的课程数量。该应用程序针对我的大学时间表。想法是我有3个活动:main.java、Sublist.java和editcrap.java。java充当启动屏幕并启动子列表活动

在子列表活动中,用户显示的布局显示(文本视图)(按钮)(计数器文本视图)彼此水平。其中有7个垂直对齐

单击菜单按钮时,会出现:(编辑主题参数),单击该按钮会将用户带到editcrap.java活动,在相应的EditText框中进行用户输入,询问子列表活动中每个对应(TextView)的主题名称和对应(Counter_TextView)的类总数。单击“确定”按钮后,数据将被传递给子列表活动以进行显示和操作

完成这项工作后,我需要一种存储数据的方法,以便下次打开应用程序时,它能够保留以前的字符串和类数值。这就是我遇到强制关闭错误或无数据保留错误的地方。这是我的密码…有人告诉我我做错了什么吗?我已经为此挣扎了好几天:)我基本上需要应用程序维护两个文件,一个包含字符串,另一个包含需要从Sublist.java活动中读取和显示的数字,因为我需要应用程序用户所做的任何更改也反映到原始文件中

//Sublist.java:


package com.shuaib669.bunkrecord;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class Sublist extends Activity{

double[] no_of_classes = new double[7];
int count[]= new int[7];
double cutOff = 0.3;
String[] newText = new String[7];
String[] newNum = new String[7];
String countString = null;
TextView subject[] = new TextView[7];
TextView counter[] = new TextView[7];  //sub11 is counter text view label
Button button[] = new Button[7];     //button1 is the increment button


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Assigning Views to objects.
            subject[0] = (TextView) findViewById(R.id.textView1);   
            counter[0] = (TextView) findViewById(R.id.counter1);
            button[0] = (Button) findViewById(R.id.button1);

            subject[1] = (TextView) findViewById(R.id.textView2);
            counter[1] = (TextView) findViewById(R.id.counter2);
            button[1] = (Button) findViewById(R.id.button2);

            subject[2] = (TextView) findViewById(R.id.textView3);
            counter[2] = (TextView) findViewById(R.id.counter3);
            button[2] = (Button) findViewById(R.id.button3);

            subject[3] = (TextView) findViewById(R.id.textView4);
            counter[3] = (TextView) findViewById(R.id.counter4);
            button[3] = (Button) findViewById(R.id.button4);

            subject[4] = (TextView) findViewById(R.id.textView5);
            counter[4] = (TextView) findViewById(R.id.counter5);
            button[4] = (Button) findViewById(R.id.button5);

            subject[5] = (TextView) findViewById(R.id.textView6);
            counter[5] = (TextView) findViewById(R.id.counter6);
            button[5] = (Button) findViewById(R.id.button6);

            subject[6] = (TextView) findViewById(R.id.textView7);
            counter[6] = (TextView) findViewById(R.id.counter7);
            button[6] = (Button) findViewById(R.id.button7);

            try {
        // open the file for reading

        DataInputStream in= new DataInputStream(openFileInput(getFilesDir() + "/" + "subject.txt"));
        // if file the available for reading
        if (in!= null) {
          // prepare the file for reading
          String line;
          int x=0;
          // read every line of the file into the line-variable, on line at the time
          while(in.readLine() != null) {
              // do something with the strings from the file

              line=DataInputStream.readUTF(in);
              subject[x].setTextColor(Color.BLACK);
              subject[x].setText(line);
              x+=1;

          }

        }

        // close the file again
        in.close();
      } 
    catch (Exception e) {
        e.printStackTrace();// do something if the myfilename.txt does not exits
      }

    button[0].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[0]>=(no_of_classes[0]*cutOff)){
                counter[0].setTextColor(Color.RED);
                countString = "" +(++count[0]);                 //Convert from int to String to set in your textview::
                counter[0].setText(countString);
            }
            else{
                countString = "" +(++count[0]);                 //Convert from int to String to set in your textview::
                counter[0].setText(countString);
            }


        }
    });

    button[1].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[1]>=(no_of_classes[1]*cutOff)){
                counter[1].setTextColor(Color.RED);
                countString = "" +(++count[1]);                 //Convert from int to String to set in your textview::
                counter[1].setText(countString);
            }
            else{
                countString = "" +(++count[1]);                 //Convert from int to String to set in your textview::
                counter[1].setText(countString);
            }


        }
    });

    button[2].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[2]>=(no_of_classes[2]*cutOff)){
                counter[2].setTextColor(Color.RED);
                countString = "" +(++count[2]);                 //Convert from int to String to set in your textview::
                counter[2].setText(countString);
            }
            else{
                countString = "" +(++count[2]);                 //Convert from int to String to set in your textview::
                counter[2].setText(countString);
            }


        }
    });

    button[3].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[3]>=(no_of_classes[3]*cutOff)){
                counter[3].setTextColor(Color.RED);
                countString = "" +(++count[3]);                 //Convert from int to String to set in your textview::
                counter[3].setText(countString);
            }
            else{
                countString = "" +(++count[3]);                 //Convert from int to String to set in your textview::
                counter[3].setText(countString);
            }


        }
    });

    button[4].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[4]>=(no_of_classes[4]*cutOff)){
                counter[4].setTextColor(Color.RED);
                countString = "" +(++count[4]);                 //Convert from int to String to set in your textview::
                counter[4].setText(countString);
            }
            else{
                countString = "" +(++count[4]);                 //Convert from int to String to set in your textview::
                counter[4].setText(countString);
            }


        }
    });

    button[5].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[5]>=(no_of_classes[5]*cutOff)){
                counter[5].setTextColor(Color.RED);
                countString = "" +(++count[5]);                 //Convert from int to String to set in your textview::
                counter[5].setText(countString);
            }
            else{
                countString = "" +(++count[5]);                 //Convert from int to String to set in your textview::
                counter[5].setText(countString);
            }


        }
    });

    button[6].setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(count[6]>=(no_of_classes[6]*cutOff)){
                counter[6].setTextColor(Color.RED);
                countString = "" +(++count[6]);                 //Convert from int to String to set in your textview::
                counter[6].setText(countString);
            }
            else{
                countString = "" +(++count[6]);                 //Convert from int to String to set in your textview::
                counter[6].setText(countString);
            }


        }
    });



}

public boolean onCreateOptionsMenu(Menu menu){      // What the MENU button does.
    super.onCreateOptionsMenu(menu);
    MenuInflater castle = getMenuInflater();
    castle.inflate(R.menu.main_menu, menu);
    return(true);
}


public boolean onOptionsItemSelected(MenuItem item){  // Opens Options of MENU.

    switch(item.getItemId()){

    case R.id.editcrap: startActivityForResult((new Intent("com.shuaib669.bunkrecord.EDITCRAP")), 1);
                        return(true);
    }

return(false);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){

case 1: if(resultCode==Activity.RESULT_OK){

        newText = data.getStringArrayExtra("com.shuaib669.bunkrecord.thetext");
        newNum = data.getStringArrayExtra("com.shuaib669.bunkrecord.thenum");

        try {
              // open myfilename.txt for writing
        DataOutputStream out = new DataOutputStream(openFileOutput(getFilesDir() + "/" + "subject.txt", Context.MODE_PRIVATE));     
        //newNum = data.getIntArrayExtra("com.shuaib669.thenum");
        //for loop to setText in the TextViews of main.xml
        for(int x=0;x<7;x++){



                    subject[x].setTextColor(Color.BLACK);
                    subject[x].setText(newText[x]);
                    // write the contents on mySettings to the file
                    out.writeUTF(newText[x]);

                    try{
                        no_of_classes[x]=Integer.parseInt(newNum[x]);
                        }
                        catch(Exception nfe){
                            nfe.printStackTrace();
                        }         
                  // close the file
                  out.close();
                  }
        }


        catch (Exception e) {
                    Log.i("Data Input Sample", "I/O Error");    //do something if an Exception occurs.
                }



            }


break;
}                                             


}
  } 
//Sublist.java:
包com.shuaib669.bunkrecord;
导入java.io.DataInputStream;
导入java.io.DataOutputStream;
导入java.io.IOException;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
公共类子列表扩展了活动{
double[]不包含任何类别=新的double[7];
整数计数[]=新整数[7];
双截止=0.3;
String[]newText=新字符串[7];
字符串[]newNum=新字符串[7];
String countString=null;
TextView主题[]=新的TextView[7];
TextView计数器[]=新建TextView[7];//sub11是计数器文本视图标签
按钮按钮[]=新按钮[7];//按钮1是增量按钮
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//将视图指定给对象。
主题[0]=(TextView)findViewById(R.id.textView1);
计数器[0]=(TextView)findViewById(R.id.counter1);
按钮[0]=(按钮)findViewById(R.id.button1);
主题[1]=(TextView)findViewById(R.id.textView2);
计数器[1]=(TextView)findViewById(R.id.counter2);
按钮[1]=(按钮)findViewById(R.id.button2);
主题[2]=(TextView)findViewById(R.id.textView3);
计数器[2]=(TextView)findViewById(R.id.counter3);
按钮[2]=(按钮)findViewById(R.id.button3);
主题[3]=(TextView)findViewById(R.id.textView4);
计数器[3]=(TextView)findViewById(R.id.counter4);
按钮[3]=(按钮)findViewById(R.id.button4);
主题[4]=(TextView)findViewById(R.id.textView5);
计数器[4]=(TextView)findViewById(R.id.counter5);
按钮[4]=(按钮)findViewById(R.id.button5);
主题[5]=(TextView)findViewById(R.id.textView6);
计数器[5]=(TextView)findViewById(R.id.counter6);
按钮[5]=(按钮)findViewById(R.id.button6);
主题[6]=(TextView)findViewById(R.id.textView7);
计数器[6]=(TextView)findViewById(R.id.counter7);
按钮[6]=(按钮)findViewById(R.id.button7);
试一试{
//打开文件进行读取
DataInputStream in=新的DataInputStream(openFileInput(getFileDir()+“/”+“subject.txt”);
//如果文件可供读取,则
if(in!=null){
//准备文件以便阅读
弦线;
int x=0;
//将文件的每一行读取到line变量中,同时在线
while(in.readLine()!=null){
//对文件中的字符串执行一些操作
line=DataInputStream.readUTF(in);
受试者[x].setTextColor(Color.BLACK);
主题[x].setText(行);
x+=1;
}
}
//再次关闭该文件
in.close();
} 
捕获(例外e){
e、 printStackTrace();//如果myfilename.txt不存在,请执行某些操作
}
按钮[0]。setOnClickListener(新视图。OnClickListener(){
公共void onClick(视图v){
//TODO自动生成的方法存根
if(计数[0]>=(类的数量[0]*截止)){
计数器[0]。setTextColor(Color.RED);
countString=“”+(++count[0]);//将int转换为字符串以在textview中设置:
计数器[0]。setText(countString);
}
否则{
countString=“”+(++count[0]);//将int转换为字符串以在textview中设置:
计数器[0]。setText(countString);
}
}
});
按钮[1]。setOnClickListener(新视图。OnClickListener(){
公共void onClick(视图v){
//TODO自动生成的方法存根
如果(计数[1]>=(类的数量[1]*截止)){
计数器[1]。setTextColor(Color.RED);
countString=“”+(++count[1]);//在文本视图中将int转换为要设置的字符串::
计数器[1]。setText(countSt
package com.shuaib669.bunkrecord;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class editcrap extends Activity{

EditText sub[] = new EditText[7];           //list of subject text edit labels.
Button parambutton1;                                            //OK buttons for edit list.
EditText num[] = new EditText[7];           //list of objects of total no. of classes bunked edit text labels. (boinkers i know)  
String theText[] = new String[7];
String theNum[] = new String[7];

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.params);

    sub[0] = (EditText) findViewById(R.id.peditText1);          //pedittext is the parameter menu edit text label
    num[0] = (EditText) findViewById(R.id.pnumText1);           //EditText label for takin in total no. of classes for 1 subject

    sub[1] = (EditText) findViewById(R.id.peditText2);
    num[1] = (EditText) findViewById(R.id.pnumText2);

    sub[2] = (EditText) findViewById(R.id.peditText3);
    num[2] = (EditText) findViewById(R.id.pnumText3);

    sub[3] = (EditText) findViewById(R.id.peditText4);
    num[3] = (EditText) findViewById(R.id.pnumText4);

    sub[4] = (EditText) findViewById(R.id.peditText5);
    num[4] = (EditText) findViewById(R.id.pnumText5);

    sub[5] = (EditText) findViewById(R.id.peditText6);
    num[5] = (EditText) findViewById(R.id.pnumText6);

    sub[6] = (EditText) findViewById(R.id.peditText7);
    num[6] = (EditText) findViewById(R.id.pnumText7);

    parambutton1 = (Button) findViewById(R.id.parambutton1);    //pbutton1 is the ok button to accept the input.

    parambutton1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub


            for(int x=0;x<7;x++){


                    theText[x] = sub[x].getText().toString();
                    theNum[x]  = num[x].getText().toString();
                    //theNum[x]  = Integer.parseInt(num[x].getText().toString());

                }



            Intent data = new Intent(editcrap.this, Sublist.class);
            data.putExtra("com.shuaib669.bunkrecord.thetext", theText);
            data.putExtra("com.shuaib669.bunkrecord.thenum", theNum);
            setResult(Activity.RESULT_OK, data);
            finish();

        }
    });


}




}
public static final String PREFS_NAME = "MyPrefsFile";
private static final String PREF_USERNAME = "username";
private static final String PREF_PASSWORD = "password";
EtUserName=(EditText) findViewById(R.id.EditText01);
EtPassword=(EditText) findViewById(R.id.EditText02);
SharedPreferences pref = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);   
String username = pref.getString(PREF_USERNAME, null);
String password = pref.getString(PREF_PASSWORD, null); 

EtUserName.setText(username);  
EtPassword.setText(password);
             String us,pa;
         us=EtUserName.getText().toString();
         pa=EtPassword.getText().toString();
         SharedPreferences settings = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
                         getSharedPreferences(PREFS_NAME,MODE_PRIVATE)
                         .edit()
                         .putString(PREF_USERNAME, us)
                         .putString(PREF_PASSWORD, pa)
                         .commit();