android中想要对文本框中输入的数据进行保存怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中想要对文本框中输入的数据进行保存怎么实现相关的知识,希望对你有一定的参考价值。

android应用开发中,给我们提供了5种数据的存储方式
1 使用SharedPreferences存储数据
2 文件存储数据
3 SQLite数据库存储数据
4 使用ContentProvider存储数据
5 网络存储数据
不同的业务逻辑,或者需求,用不同的实现方式,以下是这几中数据存储方式的说明用及法:
第一种: 使用SharedPreferences存储数据
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。
以下为示例代码:
public class MainActivity extends Activity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取SharedPreferences对象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
//存入数据
Editor editor = sp.edit();
editor.putString("STRING_KEY", "string");
editor.putInt("INT_KEY", 0);
editor.putBoolean("BOOLEAN_KEY", true);
editor.commit();
//返回STRING_KEY的值
Log.d("SP", sp.getString("STRING_KEY", "none"));
//如果NOT_EXIST不存在,则返回值为"none"
Log.d("SP", sp.getString("NOT_EXIST", "none"));


第二种: 文件存储数据
关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
文件可用来存放大量数据,如文本、图片、音频等。
默认位置:/data/data/< >/files/***.***。
代码示例:
public void save()
try
FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
catch (FileNotFoundException e)
return;

catch (IOException e)
return ;


第三种: SQLite数据库存储数据
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, php, Python)都使用了 SQLite。
SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。
SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。
读取文件示例:
public void load()
try
FileInputStream inStream=this.openFileInput("a.txt");
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1)
stream.write(buffer,0,length);

stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
catch (FileNotFoundException e)
e.printStackTrace();

catch (IOException e)
return ;


第四种 使用ContentProvider存储数据 ContentProvider其实也是通过数据库的方式来存储数据的,因此这里不再做详细介绍
第五种 网络存储数据 也就是说将数据保存在服务器,android上只需要通过httpclient发起一个请求,向服务器获取数据即可
参考技术A Android AutoCompleteTextView组件实现功能

Java编程(基于图形界面)从文件中读出数据,显示在文本框中

Java编程
1.利用记事本创建一个文本文件,输入若干整数,保存。
2.编程实现(基于图形界面):
1)从文件中读出数据,显示在文本框中;
2)创建2个线程(要求实现Runnable接口
1.利用记事本创建一个文本文件,输入若干整数,保存。
2.编程实现(基于图形界面):
1)从文件中读出数据,显示在文本框中;
2)创建2个线程(要求实现Runnable接口),分别判断其中的素数和合数,并显示出来。

首先建一个文本文件,比如在D盘根目录下,名字为:int.txt,然后写一个Java类CalcNumber.java。

****************************************************************

int.txt里面的文本如下:

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26 27 28 29 30

31 32 33 34 35 36 37 38 39 40

41 42 43 44 45 46 47 48 49 50

****************************************************************

CalcNumber.java类代码如下:

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.UIManager;

public class CalcNumber extends JFrame 

 JTextArea in;

 JTextArea suText;

 JTextArea heText;

 public CalcNumber() 

  this.setTitle("计算素数和合数");

  // 输入框

  in = new JTextArea(4, 1);

  in.setAutoscrolls(true);

  JScrollPane inScroll = new JScrollPane(in);

  in.setBorder(BorderFactory.createBevelBorder(1));

  JPanel upper = new JPanel(new BorderLayout());

  upper.add(inScroll);

  // 按钮

  JButton imp = new JButton("导入文本");

  imp.addActionListener(new ActionListener() 

   public void actionPerformed(ActionEvent e) 

    try 

     BufferedReader br = new BufferedReader(new FileReader(

       "d:\\\\int.txt"));

     String s;

     while ((s = br.readLine()) != null) 

      in.setText(in.getText() + "\\n" + s);

     

     br.close();

     catch (FileNotFoundException e1) 

     e1.printStackTrace();

     catch (IOException e2) 

     e2.printStackTrace();

    

   

  );

  JButton start = new JButton("启动两个线程并计算");

  start.addActionListener(new CalcActionListener());

  JPanel buttonP = new JPanel();

  buttonP.add(imp);

  buttonP.add(start);

  // 结果

  JPanel result = new JPanel(new GridLayout(1, 2));

  JPanel suPanel = new JPanel();

  suPanel.setBorder(BorderFactory.createTitledBorder("以下为素数"));

  JPanel hePanel = new JPanel();

  hePanel.setBorder(BorderFactory.createTitledBorder("以下为合数"));

  result.add(suPanel);

  result.add(hePanel);

  suText = new JTextArea(4, 25);

  JScrollPane suScroll = new JScrollPane(suText);

  suText.setBorder(BorderFactory.createBevelBorder(1));

  heText = new JTextArea(4, 25);

  JScrollPane heScroll = new JScrollPane(heText);

  heText.setBorder(BorderFactory.createBevelBorder(1));

  suPanel.add(suScroll);

  hePanel.add(heScroll);

  // 总

  JPanel all = new JPanel(new GridLayout(2, 1, 2, 2));

  all.setBorder(BorderFactory.createTitledBorder("计算素数和合数"));

  all.add(upper);

  all.add(result);

  this.add(buttonP, BorderLayout.SOUTH);

  this.add(all, BorderLayout.CENTER);

  // this.setSize(400, 300);

  this.pack();

  Toolkit tool = Toolkit.getDefaultToolkit();

  Dimension screen = tool.getScreenSize();

  this.setLocation(screen.width / 2 - this.getWidth() / 2, screen.height

    / 2 - this.getHeight() / 2);

  this.setVisible(true);

  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

 class CalcActionListener implements ActionListener, Runnable 

  public void actionPerformed(ActionEvent e) 

   Thread suThread = new Thread(new CalcActionListener(), "su");

   Thread heThread = new Thread(new CalcActionListener(), "he");

   suThread.start();

   heThread.start();

  

  public void run() 

   String s = in.getText();

   String[] arr = s.split("\\\\s");

   StringBuffer su = new StringBuffer();

   StringBuffer he = new StringBuffer();

   for (int i = 0; i < arr.length; i++) 

    boolean flag = false;

    if (!arr[i].equals("") && arr[i] != null) 

     int n = Integer.valueOf(arr[i]);

     for (int j = 2; j < n; j++) 

      if (n % j == 0) 

       flag = true;

      

     

     if (Thread.currentThread().getName().equals("su")

       && flag == false) 

      su = su.append(" " + n);

     

     if (Thread.currentThread().getName().equals("he")

       && flag == true) 

      he = he.append(" " + n);

     

    

   

   if (Thread.currentThread().getName().equals("su")) 

    suText.setText(new String(su));

    else 

    heText.setText(new String(he));

   

  

 

 public static void main(String[] args) throws Exception 

  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

  CalcNumber c = new CalcNumber();

 

****************************************************************

运行结果如下:

参考技术A btn.addActionListener(new ActionListener()

public void actionPerformed(ActionEvent e)
String content=jtainput.getText();
if(content.equals(""))
JOptionPane.showMessageDialog(null,"请输入");


jtaoutput.setText(jtaoutput.getText()+'\n'+content);
jtainput.setText("");


);
参考技术B import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Test extends JFrame implements ActionListener,Runnable
JButton btn;
JTextArea text;
JScrollPane scroll;
Thread prime,composite;
File file;
String s1="素数有:",s2="合数有:";
public Test()
btn=new JButton("load file...");
btn.addActionListener(this);
text=new JTextArea();
text.setLineWrap(true);
scroll=new JScrollPane(text);
JPanel p=new JPanel(new BorderLayout());
p.add(btn,"South");
p.add(scroll,"Center");
setContentPane(p);
setSize(800,500);
setTitle("提取素数和合数");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

public static void main(String [] args)
new Test();

public void actionPerformed(ActionEvent e)
JFileChooser chooser=new JFileChooser();
chooser.showOpenDialog(this);
file=chooser.getSelectedFile();
writeToText();
(prime=new Thread(this,"prime")).start();
(composite=new Thread(this,"composite")).start();


public void run()
if(Thread.currentThread().getName().equals("prime"))
splitPrime();

if(Thread.currentThread().getName().equals("composite"))
splitComposite();




public void writeToText()
String s=null;
try
BufferedReader in=new BufferedReader(new FileReader(file));
text.setText("");
while((s=in.readLine())!=null)
text.append(s);


catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException ee)
ee.printStackTrace();



public void splitComposite()
Scanner sc=new Scanner(text.getText());
for(int i=sc.nextInt();sc.hasNextInt();i=sc.nextInt())
int j=i/2;
for(int k=1;k<=j&&i!=2;k++)
if(k==1)
continue;

if(i%k==0)
s2+=String.valueOf(i)+" ";
break;



text.append("\n\n"+s2);


public void splitPrime()
Scanner sc=new Scanner(text.getText());
for(int i=sc.nextInt();sc.hasNextInt();i=sc.nextInt())
int j=i/2;
int count=0;
for(int k=1;k<=j&&i!=2;k++)
if(k==1)
count++;
continue;

if(i%k!=0)
count++;

if(k==j&&count==j)
s1+=String.valueOf(i)+" ";


if(i==2)
s1+=String.valueOf(i)+" ";


text.append("\n\n"+s1);


让我很郁闷的是,这个程序判断3的时候老是说不是素数,可是我口算了很多遍都是的啊,其它的要求都满足了!

以上是关于android中想要对文本框中输入的数据进行保存怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

Android界面中一个文本框,返回时保存数据,

将文本框中的数据保存到文本文件中

如何在 PHP CodeIgniter 中保存文本框中输入的数据

winform中文本框的值怎么保存

如何保存在PHP CodeIgniter中的文本框中输入的数据

自动更新文本框