Android 无法使用intent在下一个xml页中显示我的保存数据

Android 无法使用intent在下一个xml页中显示我的保存数据,android,database,eclipse,sqlite,android-intent,Android,Database,Eclipse,Sqlite,Android Intent,我可以将数据保存在数据库中,但无法在下一个xml页面中显示已保存的数据。希望你们都能帮助我 下面是我的代码: main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_p

我可以将数据保存在数据库中,但无法在下一个xml页面中显示已保存的数据。希望你们都能帮助我

下面是我的代码:

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter your name below:" 
/>

<EditText
android:id="@+id/nameText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter your langtitude below:" 
/>

<EditText
android:id="@+id/langText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter your longtitude below:" 
/>

<EditText
android:id="@+id/longText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

<Button
android:id="@+id/saveButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save" 
/>
DataListActivity.java

package com.mp.Testing;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class DataListActivity extends ListActivity 
{
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;

// Define the variables
private DataAdapter DbHelper;  

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.solution);

    DbHelper = new DataAdapter(this);
    DbHelper.open();
    fillData();                                                           
    registerForContextMenu(getListView());
}

// Fill the data in the database
private void fillPictures() 
{
    Cursor dbCursor = DbHelper.fetchAllData();               
    startManagingCursor(dbCursor);                                 

    // Creating an array to specify the fields we want 
    String[] dat = new String[]{DataAdapter.PICTURES_FILE};  

    // An array of the fields we want to bind in the view
    int[] dato = new int[]{R.id.nameText};                                     

    // Create a simple cursor adapter & display it
    SimpleCursorAdapter reminders = new SimpleCursorAdapter(this, R.layout.solution, dbCursor, dat, dato);                           
    setListAdapter(reminders);                                            
 }

// Fill the data in the database
private void fillData() 
{
    Cursor dbCursor = DbHelper.fetchAllData();               
    startManagingCursor(dbCursor);                                 

    // Creating an array to specify the fields we want 
    String[] lan = new String[]{DataAdapter.DATA_LANGTITUDE};  
    String[] lon = new String[]{DataAdapter.DATA_LONGTITUDE}; 

    // An array of the fields we want to bind in the view
    int[] lanto = new int[]{R.id.langText};  
    int[] lonto = new int[]{R.id.longText};

    // Create a simple cursor adapter & display it
    SimpleCursorAdapter landers = new SimpleCursorAdapter(this, R.layout.solution, dbCursor, lan, lanto);                           
    setListAdapter(landers); 

    // Create a simple cursor adapter & display it
    SimpleCursorAdapter londers = new SimpleCursorAdapter(this, R.layout.solution, dbCursor, lon, lonto);                           
    setListAdapter(londers);
 }

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(this, DataEditActivity.class);
    i.putExtra(DataAdapter.PICTURES_ROWID, id);
    i.putExtra(DataAdapter.DATA_NAME, id);
    startActivityForResult(i, ACTIVITY_EDIT);
 }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) 
{
    super.onActivityResult(requestCode, resultCode, intent);
    fillData();                                                           
 }

@Override
public boolean onContextItemSelected(MenuItem item) 
{                     
    switch(item.getItemId()) 

    {
        case R.id.list:
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();    
        DbHelper.deleteData(info.id);                            
        fillData();                                                   
        return true;
    }
    return super.onContextItemSelected(item);
}
}
package com.mp.Testing;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class DataEditActivity extends Activity implements OnClickListener
{
private DataAdapter DbHelper;
private Long mPicsId;
private Long mDataId;
private EditText ET;
private EditText LAT;
private EditText LOT;
private Button SB;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DbHelper = new DataAdapter(this);

    ET = (EditText) findViewById(R.id.nameText);
    LAT = (EditText) findViewById(R.id.langText);
    LOT = (EditText) findViewById(R.id.longText);
    SB = (Button) findViewById(R.id.saveButton);

    mPicsId = savedInstanceState != null                                  
    ? savedInstanceState.getLong(DataAdapter.PICTURES_ROWID): null;
    mDataId = savedInstanceState != null                                  
    ? savedInstanceState.getLong(DataAdapter.DATA_NAME): null;
    registerButtonListenersAndSetDefaultText();
}

private void registerButtonListenersAndSetDefaultText() 
{
    // TODO Auto-generated method stub
    SB.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View view) 
        {
        saveState();                                                
            setResult(RESULT_OK);                                       
            Toast.makeText(DataEditActivity.this,                   
            getString(R.string.message),
            Toast.LENGTH_SHORT).show();
            finish();          
         }
    });
}

// Intent to start the activity
private void setRowIdFromIntent() 
{                                      
    if (mPicsId == null) 
    {
        Bundle extras = getIntent().getExtras();
        mPicsId = extras != null
        ? extras.getLong(DataAdapter.PICTURES_ROWID): null;
   }
   if (mDataId == null) 
   {
        Bundle extras = getIntent().getExtras();
        mDataId = extras != null
        ? extras.getLong(DataAdapter.DATA_NAME): null;
   }
}

// Database is close when it is pause
@Override
protected void onPause() 
{
    super.onPause();
    DbHelper.close();                                                    
}

// Resume the database
@Override
protected void onResume() 
{                                                
    super.onResume();
    DbHelper.open();                                                     
    setRowIdFromIntent();                                                 
    populateFields();                                                     
}

// Populate the form
private void populateFields()  
{                                          
    if (mPicsId != null) 
    {
        Cursor pics = DbHelper.fetchData(mPicsId);                
        startManagingCursor(pics);            

        ET.setText(pics.getString(
        pics.getColumnIndexOrThrow(DataAdapter.PICTURES_FILE)));       
    }
    if (mDataId != null) 
    {
        Cursor data = DbHelper.fetchData(mDataId);                
        startManagingCursor(data);            

        LAT.setText(data.getString(
        data.getColumnIndexOrThrow(DataAdapter.DATA_LANGTITUDE)));  
        LOT.setText(data.getString(
        data.getColumnIndexOrThrow(DataAdapter.DATA_LONGTITUDE))); 
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) 
{
    super.onSaveInstanceState(outState);
    outState.putLong(DataAdapter.PICTURES_ROWID, mPicsId); 
    outState.putLong(DataAdapter.DATA_NAME, mDataId); 
}

private void saveState() 
{
    String file = ET.getText().toString();
    String lan = LAT.getText().toString();
    String lon = LOT.getText().toString();

    if (mPicsId == null && mDataId == null) 
    {                                                 
        long id = DbHelper.createPictures(file);
        long ild = DbHelper.createData(lan, lon);

        if (id > 0 && ild > 0) 
        {                                                     
            mPicsId = id;  
            mDataId = ild;
        }
    } 
    else 
    {
        DbHelper.updatePictures(mPicsId, file);  
        DbHelper.updateData(mDataId, lan, lon);
    }
}

public void onClick(View v) 
{
    Intent i = new Intent(DataEditActivity.this, Shown.class);
    startActivity(i);
}
}
DataEditActivity.java

package com.mp.Testing;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class DataListActivity extends ListActivity 
{
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;

// Define the variables
private DataAdapter DbHelper;  

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.solution);

    DbHelper = new DataAdapter(this);
    DbHelper.open();
    fillData();                                                           
    registerForContextMenu(getListView());
}

// Fill the data in the database
private void fillPictures() 
{
    Cursor dbCursor = DbHelper.fetchAllData();               
    startManagingCursor(dbCursor);                                 

    // Creating an array to specify the fields we want 
    String[] dat = new String[]{DataAdapter.PICTURES_FILE};  

    // An array of the fields we want to bind in the view
    int[] dato = new int[]{R.id.nameText};                                     

    // Create a simple cursor adapter & display it
    SimpleCursorAdapter reminders = new SimpleCursorAdapter(this, R.layout.solution, dbCursor, dat, dato);                           
    setListAdapter(reminders);                                            
 }

// Fill the data in the database
private void fillData() 
{
    Cursor dbCursor = DbHelper.fetchAllData();               
    startManagingCursor(dbCursor);                                 

    // Creating an array to specify the fields we want 
    String[] lan = new String[]{DataAdapter.DATA_LANGTITUDE};  
    String[] lon = new String[]{DataAdapter.DATA_LONGTITUDE}; 

    // An array of the fields we want to bind in the view
    int[] lanto = new int[]{R.id.langText};  
    int[] lonto = new int[]{R.id.longText};

    // Create a simple cursor adapter & display it
    SimpleCursorAdapter landers = new SimpleCursorAdapter(this, R.layout.solution, dbCursor, lan, lanto);                           
    setListAdapter(landers); 

    // Create a simple cursor adapter & display it
    SimpleCursorAdapter londers = new SimpleCursorAdapter(this, R.layout.solution, dbCursor, lon, lonto);                           
    setListAdapter(londers);
 }

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(this, DataEditActivity.class);
    i.putExtra(DataAdapter.PICTURES_ROWID, id);
    i.putExtra(DataAdapter.DATA_NAME, id);
    startActivityForResult(i, ACTIVITY_EDIT);
 }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) 
{
    super.onActivityResult(requestCode, resultCode, intent);
    fillData();                                                           
 }

@Override
public boolean onContextItemSelected(MenuItem item) 
{                     
    switch(item.getItemId()) 

    {
        case R.id.list:
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();    
        DbHelper.deleteData(info.id);                            
        fillData();                                                   
        return true;
    }
    return super.onContextItemSelected(item);
}
}
package com.mp.Testing;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class DataEditActivity extends Activity implements OnClickListener
{
private DataAdapter DbHelper;
private Long mPicsId;
private Long mDataId;
private EditText ET;
private EditText LAT;
private EditText LOT;
private Button SB;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DbHelper = new DataAdapter(this);

    ET = (EditText) findViewById(R.id.nameText);
    LAT = (EditText) findViewById(R.id.langText);
    LOT = (EditText) findViewById(R.id.longText);
    SB = (Button) findViewById(R.id.saveButton);

    mPicsId = savedInstanceState != null                                  
    ? savedInstanceState.getLong(DataAdapter.PICTURES_ROWID): null;
    mDataId = savedInstanceState != null                                  
    ? savedInstanceState.getLong(DataAdapter.DATA_NAME): null;
    registerButtonListenersAndSetDefaultText();
}

private void registerButtonListenersAndSetDefaultText() 
{
    // TODO Auto-generated method stub
    SB.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View view) 
        {
        saveState();                                                
            setResult(RESULT_OK);                                       
            Toast.makeText(DataEditActivity.this,                   
            getString(R.string.message),
            Toast.LENGTH_SHORT).show();
            finish();          
         }
    });
}

// Intent to start the activity
private void setRowIdFromIntent() 
{                                      
    if (mPicsId == null) 
    {
        Bundle extras = getIntent().getExtras();
        mPicsId = extras != null
        ? extras.getLong(DataAdapter.PICTURES_ROWID): null;
   }
   if (mDataId == null) 
   {
        Bundle extras = getIntent().getExtras();
        mDataId = extras != null
        ? extras.getLong(DataAdapter.DATA_NAME): null;
   }
}

// Database is close when it is pause
@Override
protected void onPause() 
{
    super.onPause();
    DbHelper.close();                                                    
}

// Resume the database
@Override
protected void onResume() 
{                                                
    super.onResume();
    DbHelper.open();                                                     
    setRowIdFromIntent();                                                 
    populateFields();                                                     
}

// Populate the form
private void populateFields()  
{                                          
    if (mPicsId != null) 
    {
        Cursor pics = DbHelper.fetchData(mPicsId);                
        startManagingCursor(pics);            

        ET.setText(pics.getString(
        pics.getColumnIndexOrThrow(DataAdapter.PICTURES_FILE)));       
    }
    if (mDataId != null) 
    {
        Cursor data = DbHelper.fetchData(mDataId);                
        startManagingCursor(data);            

        LAT.setText(data.getString(
        data.getColumnIndexOrThrow(DataAdapter.DATA_LANGTITUDE)));  
        LOT.setText(data.getString(
        data.getColumnIndexOrThrow(DataAdapter.DATA_LONGTITUDE))); 
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) 
{
    super.onSaveInstanceState(outState);
    outState.putLong(DataAdapter.PICTURES_ROWID, mPicsId); 
    outState.putLong(DataAdapter.DATA_NAME, mDataId); 
}

private void saveState() 
{
    String file = ET.getText().toString();
    String lan = LAT.getText().toString();
    String lon = LOT.getText().toString();

    if (mPicsId == null && mDataId == null) 
    {                                                 
        long id = DbHelper.createPictures(file);
        long ild = DbHelper.createData(lan, lon);

        if (id > 0 && ild > 0) 
        {                                                     
            mPicsId = id;  
            mDataId = ild;
        }
    } 
    else 
    {
        DbHelper.updatePictures(mPicsId, file);  
        DbHelper.updateData(mDataId, lan, lon);
    }
}

public void onClick(View v) 
{
    Intent i = new Intent(DataEditActivity.this, Shown.class);
    startActivity(i);
}
}
DataDBHelper.java

package com.mp.Testing;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataDBHelper extends SQLiteOpenHelper
{
// Name & the version of Database.
public static final String DATABASE_NAME = "information";
public static final int DATABASE_VERSION = 1;

// Names of the Tables in Database
public static final String DATABASE_TABLE_1 = "pictures";
public static final String DATABASE_TABLE_2 = "data";

// Columns present in DATABASE_TABLE
public static final String PICTURES_ROWID = "_id";
public static final String PICTURES_FILE = "pictures_file";
public static final String DATA_NAME = "_name";
public static final String DATA_LANGTITUDE = "pictures_langtitude";
public static final String DATA_LONGTITUDE = "pictures_longtitude";

// SQL query string for creating DATABASE_TABLE_1
static final String CREATE_DATABASE_TABLE_1 =
             "create table " + DATABASE_TABLE_1 + " (" + PICTURES_ROWID +
             " integer primary key autoincrement, " + PICTURES_FILE +
             " text not null);";

// SQL query string for creating DATABASE_TABLE_2
static final String CREATE_DATABASE_TABLE_2 =
             "create table " + DATABASE_TABLE_2 + " (" + DATA_NAME +
             " integer primary key autoincrement, " + DATA_LANGTITUDE +
             " text not null, " + DATA_LONGTITUDE + " text not null);";

// To execute the SQL command
@Override
public void onCreate(SQLiteDatabase database) 
{
    database.execSQL(CREATE_DATABASE_TABLE_1);
    database.execSQL(CREATE_DATABASE_TABLE_2);
    Log.d("SaveData", "Created DB");
}

public static final String TAG_1 = "PICTURES_TABLE";
public static final String TAG_2 = "DATA_TABLE";

private Context context;

// Constructor
public DataDBHelper(Context context) 
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    this.context = context;
}

// Upgrading the database version
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{
    // TODO Auto-generated method stub  
}

// Inserting pictures into database
private void insertDataIntoPictures(SQLiteDatabase db) 
{
    try
    {
        InputStream is = context.getResources().openRawResource(R.raw.picture);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String strLine = null;

        while ((strLine = (br.readLine()).trim()) != null) 
        {
            String[] temp = null;

            ContentValues initialValues = new ContentValues();

            initialValues.put(PICTURES_FILE, temp[0].trim());

            db.insert(DATABASE_TABLE_1, null, initialValues);
        }
    is.close();
    }   
    catch (Exception e)
    {
        Log.d(TAG_1, "Error while inserting common names into table");
    }
}

// Inserting data into database
private void insertDataIntoData(SQLiteDatabase db) 
{
    try
    {
        InputStream is = context.getResources().openRawResource(R.raw.data); 
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String strLine = null;

        while ((strLine = (br.readLine()).trim()) != null) 
        {
            String[] temp = null;

            ContentValues initialValues = new ContentValues();

            initialValues.put(DATA_LANGTITUDE, temp[0]);
            initialValues.put(DATA_LONGTITUDE, temp[1]);

            db.insert(DATABASE_TABLE_2, null, initialValues);
        }
    is.close();
    }   
    catch (Exception e)
    {
        Log.d(TAG_2, "Error while inserting common names into table");
    }
}
}
java.java

package com.mp.Testing;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class Shown extends Activity
{
long PICTURES_ROWID;
String PICTURES_FILE;
String DATA_NAME;
String DATA_LANGTITUDE;
String DATA_LONGTITUDE;

public static ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.solution);

Bundle extras = getIntent().getExtras();

PICTURES_ROWID = extras.getLong(DataAdapter.PICTURES_ROWID);
PICTURES_FILE = extras.getString(DataAdapter.PICTURES_FILE);
DATA_NAME = extras.getString(DataAdapter.DATA_NAME);
DATA_LANGTITUDE = extras.getString(DataAdapter.DATA_LANGTITUDE);
DATA_LONGTITUDE = extras.getString(DataAdapter.DATA_LONGTITUDE);

lv = (ListView)findViewById(R.id.list);
}
}
我希望将保存在main.xml中的数据显示在solution.xml中

谢谢大家!

您需要定义一个命令来告诉Android要将什么呈现到您的列表中。(至少在您不是从阵列创建的情况下如此。)


有关如何使用ListView的一个非常简单的示例,请看以下内容:

您尝试了什么?错误是什么?你认为发生了什么事?来吧…提供关于你问题的完整细节很好。但是你的问题也应该突出你面临的问题。嗨,谢谢你帮助我。我认为问题在于我的DataListActivity。不确定在我的编码中出现错误时会发生什么,无法在solution.xml中显示保存的数据