我是android新手,我为sql创建了一个应用程序,它是一个简单的应用程序,用户输入一个名称,显示名称显示在显示屏上,但不幸的是文本没有显示 这是代码:
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.ashis.mmm.MainActivity">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp" />
</RelativeLayout>
MainActivity.java
package com.example.ashis.mmm;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
TextView textView;
Database db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText) findViewById(R.id.editText);
button=(Button) findViewById(R.id.button);
textView=(TextView) findViewById(R.id.textView);
db = new Database(getApplicationContext(),null,null,1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String input = editText.getText().toString() ;
Person person = new Person(input);
db.add_row(person);
editText.setText("");
printDatabse();
}
});
}
private void printDatabse() {
String dbString = db.printData();
textView.setText(dbString);
}
}
Person.java
package com.example.ashis.mmm;
/**
* Created by ashis on 8/27/2016.
*/
public class Person {
private int _id;
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
DataBase.java
package com.example.ashis.mmm;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by ashis on 8/27/2016.
*/
public class Database extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "persons.db";
private static final String TABLE_NAME = "Persons";
private static final String COLLUMN_ID = "_id";
private static final String COLLUMN_NAME = "Name";
public Database(Context context, String DATABASE_NAME, SQLiteDatabase.CursorFactory factory, int DATABASE_VERSION) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String onCreate = "CREATE TABLE " + TABLE_NAME + "( " +
COLLUMN_ID + " INTEGER ," +
COLLUMN_NAME + " TEXT );";
db.execSQL(onCreate);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
}
public void add_row(Person person)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(COLLUMN_NAME,person.getName());
db.insert(TABLE_NAME,null,values);
db.close();
}
public String printData()
{
String dbqry = "";
SQLiteDatabase db = getReadableDatabase();
String printqry = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(printqry,null);
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
if (cursor.getString(cursor.getColumnIndex("Name")) != null)
{
dbqry += cursor.getString(1);
dbqry +="\n";
}
}
db.close();
cursor.close();
return dbqry;
}
}
答案 0 :(得分:0)
了解文本未出现在TextView中的最佳方法是进行调试,但看起来你并不是那么好。在这种情况下,您可以使用Log.d();方法。我会向你推荐你可能遇到问题的地方,只需在这些地方放一些日志,然后检查你的变量和值是怎么回事。
如果您的视图在屏幕上可见并且printData()方法正常工作,您将看到该文本没有任何其他问题!