2012-01-25 5 views
0

データをデータベースに保存できますが、次のXMLページに保存したデータを表示できません。あなたのすべてが私を助けてくれることを願います。インテントを使用して次の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" 
/> 

solution.xml

<?xml version="1.0" encoding="utf-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:id="@+id/list"> 
</ListView> 

DataAdapter.java

package com.mp.Testing; 

import java.io.IOException; 

import com.mp.Testing.DataAdapter; 
import com.mp.Testing.DataListActivity; 

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

public class DataAdapter 
{ 
// Name of the database 
private static final String DATABASE_NAME = "information"; 

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

// Version of the database 
private static final int DATABASE_VERSION = 1; 

// 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"; 

// Help to create & manage the SQLiteDatabase 
private DataDBHelper DbHelper; 

// CRUD on SQLiteDatabase 
private SQLiteDatabase database; 

// 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);"; 

// Context object associated with the SQLite database object 
private final Context Ctx; 

// Constructor 
public DataAdapter(Context ctx) 
{ 
    this.Ctx = ctx; 
} 

// Open database connection 
public DataAdapter open() throws android.database.SQLException 
{ 
    DbHelper = new DataDBHelper(Ctx); 
    database = DbHelper.getWritableDatabase(); 
    return this; 
} 

// Close database connection 
public void close() 
{ 
    DbHelper.close(); 
} 

// Create the database_1 & define the values that is being insert 
public long createPictures(String file) 
{            
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(PICTURES_FILE, file); 

    return database.insert(DATABASE_TABLE_1, null, initialValues); 
} 

// Create the database_2 & define the values that is being insert 
public long createData(String lan, String lon) 
{            
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(DATA_LANGTITUDE, lan); 
    initialValues.put(DATA_LONGTITUDE, lon); 

    return database.insert(DATABASE_TABLE_2, null, initialValues); 
} 

// Delete the ID in the database_1 
public boolean deletePictures(long picsId) 
{        
    return database.delete(DATABASE_TABLE_1, PICTURES_ROWID + "=" + picsId, null) > 0;   
} 

// Delete the ID in the database_2 
public boolean deleteData(long dataId) 
{        
    return database.delete(DATABASE_TABLE_2, DATA_NAME + "=" + dataId, null) > 0;   
} 

// Find all the data of database_1 from the system 
public Cursor fetchAllPictures() 
{          
    return database.query(DATABASE_TABLE_1, new String[] {PICTURES_ROWID, PICTURES_FILE}, null, null, null, null, null); 
} 

// Find all the data of database_2 from the system 
public Cursor fetchAllData() 
{          
    return database.query(DATABASE_TABLE_2, new String[] {DATA_NAME, DATA_LANGTITUDE, DATA_LONGTITUDE}, null, null, null, null, null); 
} 

// Fetch Pictures according to ID 
public Cursor fetchPictures(long picsId) throws SQLException 
{    
    Cursor dCursor = 
    database.query(true, DATABASE_TABLE_1, new String[] {PICTURES_ROWID, 
    PICTURES_FILE}, PICTURES_ROWID + "=" + 
    picsId, null, null, null, null, null);  

    // Go to the first record 
    if (dCursor != null) 
    { 
     dCursor.moveToFirst();            
    } 
    return dCursor; 
} 

// Fetch Data according to ID 
public Cursor fetchData(long dataId) throws SQLException 
{    
    Cursor dCursor = 
    database.query(true, DATABASE_TABLE_2, new String[] {DATA_NAME, 
    DATA_LANGTITUDE, DATA_LONGTITUDE}, DATA_NAME + "=" + 
    dataId, null, null, null, null, null);  

    // Go to the first record 
    if (dCursor != null) 
    { 
     dCursor.moveToFirst();            
    } 
    return dCursor; 
} 

// Update the database_1 
public boolean updatePictures(long picsId, String file) 
{            
    ContentValues args = new ContentValues();        
    args.put(PICTURES_FILE, file); 

    return database.update(DATABASE_TABLE_1, args, PICTURES_ROWID + "=" + picsId, null) > 0;  
} 

// Update the database_2 
public boolean updateData(long dataId, String lan, String lon) 
{            
    ContentValues args = new ContentValues();        
    args.put(DATA_LANGTITUDE, lan); 
    args.put(DATA_LONGTITUDE, lon); 

    return database.update(DATABASE_TABLE_2, args, DATA_NAME + "=" + dataId, null) > 0;  
} 
} 

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); 
} 
} 

DataEditActivity.java

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"); 
    } 
} 
} 

Shown.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); 
} 
} 

私はトンを願っていますo main.xmlに保存したデータを、solution.xmlに表示するように表示します。

ありがとうございました!

+0

あなたは何を試してみましたか?何がエラーですか?あなたは何が起こっていると思いますか?是非。 – JoxTraex

+0

あなたの問題に関する完全な詳細は良いです。しかし、あなたの質問はまた、あなたが問題に直面している部分を強調する必要があります。 – manjusg

+0

こんにちは、私を助けてくれてありがとう。私は問題が私のDataListActivityにあると仮定します。私のコーディングで、いつデータがsave.xmlに保存されないのかわからない – Eric

答えて

関連する問題