Aktif-android ile ilgili bir sorun yaşıyorum. Kullanıcı konumunu, yolcu sayısını ve genel yönü almaya çalışıyorum. Bunları telefona depolamak için activeAndroid kullanarak "Splits" adlı bir tabloya kaydetmek istiyorum. Ancak, save()
yöntemini her aradığımda, uzun bir hata listesi alıyorum. Uygulamayı yeniden yüklemeyi ve DB adımı bildirimde değiştirmeyi denedim, ancak bu çözümlerden hiçbiri işe yaramadı. ben 5. gibiyim mümkünse bu yüzden, hareket, programlamaya çok yeni unutmayın teşekkürler :) İşte ActiveAndroid SQLite istisnası 'Hayır böyle bir tablo'
11-03 23:27:51.094 2905-2905/dk.specialisering.splitcab E/SQLiteLog﹕ (1) no such table: Splits
11-03 23:27:51.115 2905-2905/dk.specialisering.splitcab E/SQLiteDatabase﹕ Error inserting passengers=1 Id=null startLong=9.92773733 direction=North startLat=57.0487396
android.database.sqlite.SQLiteException: no such table: Splits (code 1): , while compiling: INSERT INTO Splits(passengers,Id,startLong,direction,startLat) VALUES (?,?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1118)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:691)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1589)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1461)
at com.activeandroid.Model.save(Model.java:153)
at dk.specialisering.splitcab.MainActivity.save(MainActivity.java:127)
at dk.specialisering.splitcab.MainActivity$1.onClick(MainActivity.java:37)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
11-03 23:27:51.175 2905-2905/dk.specialisering.splitcab E/SQLiteLog﹕ (1) no such table: Splits
11-03 23:27:51.175 2905-2905/dk.specialisering.splitcab E/SQLiteDatabase﹕ Error inserting passengers=1 Id=null startLong=9.92773733 direction=North startLat=57.0487396
android.database.sqlite.SQLiteException: no such table: Splits (code 1): , while compiling: INSERT INTO Splits(passengers,Id,startLong,direction,startLat) VALUES (?,?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1118)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:691)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1589)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1461)
at com.activeandroid.Model.save(Model.java:153)
at dk.specialisering.splitcab.MainActivity.save(MainActivity.java:127)
at dk.specialisering.splitcab.MainActivity$1.onClick(MainActivity.java:37)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
benim Model sınıfı içindir tablo
@Table(name = "Splits")
public class Splits extends Model {
@Column(name = "startLat")
public double startLat;
@Column(name = "startLong")
public double startLong;
@Column(name = "passengers")
public int passengers;
@Column(name = "direction")
public String direction;
public Splits()
{
super();
}
public Splits(double startLat, double startLong, int passengers, String direction)
{
this.startLat = startLat;
this.startLong = startLong;
this.passengers = passengers;
this.direction = direction;
}
}
Benim aktivite
package dk.specialisering.splitcab;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.media.Image;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.TextView;
import com.activeandroid.ActiveAndroid;
import dk.specialiserng.model.Splits;
public class MainActivity extends Activity {
TextView textLat;
TextView textLong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageButton btn = (ImageButton)findViewById(R.id.imgBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
save();
}
});
ActiveAndroid.initialize(this);
populateSpinners();
initializeLocation();
}
private class myLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
if(location != null) {
double pLong = location.getLongitude();
double pLat = location.getLatitude();
textLat.setText(Double.toString(pLat));
textLong.setText((Double.toString(pLong)));
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
public void populateSpinners()
{
Spinner passengerSpinner = (Spinner) findViewById(R.id.ddlPassengers);
Spinner directionSpinner = (Spinner) findViewById(R.id.ddlDirection);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> passengerAdapter = ArrayAdapter.createFromResource(this,
R.array.noOfPassengers, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.splitDirection, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
passengerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
passengerSpinner.setAdapter(passengerAdapter);
directionSpinner.setAdapter(adapter);
}
public void initializeLocation()
{
textLat = (TextView) findViewById(R.id.textLat);
textLong = (TextView) findViewById(R.id.textLong);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new myLocationListener();
Location lastLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
if (lastLocation != null)
{
textLat.setText(Double.toString(lastLocation.getLatitude()));
textLong.setText(Double.toString(lastLocation.getLongitude()));
}
}
public void save()
{
Spinner pasSpin = (Spinner)findViewById(R.id.ddlPassengers);
Spinner dirSpin = (Spinner)findViewById(R.id.ddlDirection);
double latitude = Double.parseDouble(textLat.getText().toString());
double longitude = Double.parseDouble(textLong.getText().toString());
int passengers = Integer.parseInt(pasSpin.getSelectedItem().toString());
String direction = dirSpin.getSelectedItem().toString();
Splits splits = new Splits(latitude, longitude, passengers, direction);
splits.save();
}
}
My düzen
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Your Position in latitude and longitude"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textLat"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/textView"
android:layout_alignEnd="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textLong"
android:layout_below="@+id/textLat"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/textLat"
android:layout_alignEnd="@+id/textLat" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Number of Splitters in your party"
android:id="@+id/textView2"
android:layout_below="@+id/textLong"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/ddlPassengers"
android:layout_below="@+id/textView2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:spinnerMode="dropdown" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="The direction you will be going"
android:id="@+id/textView3"
android:layout_below="@+id/ddlPassengers"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/ddlDirection"
android:layout_below="@+id/textView3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:spinnerMode="dropdown" />
<ImageButton
android:layout_width="200dp"
android:layout_height="90dp"
android:scaleType="fitCenter"
android:id="@+id/imgBtn"
android:src="@drawable/gotitbtn"
android:background="@android:color/transparent"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
Umarım birileri yardımcı olabilir, biliyorum bir demet yayınladım, ama bu noktada çaresizleşiyorum. Teşekkürler
Evet, bu doğru, yapabileceğiniz (ve bence) kullanmanız gerekir ** ** manifest dosyasında (dokümantasyon önerileri gibi) ve AA veritabanınızı yeniden oluşturmak istediğinizde X değerini artırın (varsayılan X = 1). –
Arthez
'emülatörden uygulamayı kaldırın ve tam olarak yeniden kurulmasına izin verin' işe yaradı' .. Teşekkürler. –