2017-11-13 8 views
0

私はAndroid開発の学習者です。私はあなたの助けが必要なプログラムでSQLiteデータベースを学んでいました。Clickable Text Viewが動作しない

私が開発したプログラムは、ユーザーからの入力を取得し、SQLiteデータベースに値を格納します。また、保存されたデータを表示するはずのクリック可能なテキストビューも作成しました。

私が直面している問題は、プログラムを実行して直接Show Data(Textview)をクリックすると、アラートダイアログが開き、データを表示しますが、データを入力した後で、テキスト表示は無効になります。

助けてください。

以下は私のXMLファイルとJavaファイルです。

XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.junaidmalik.sqlitedemo.SqliteDemo"> 

    <EditText 
     android:id="@+id/rollnum" 
     android:hint="Enter Roll Number" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:inputType="number" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.503" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.16" /> 

    <EditText 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:hint="Enter Name" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.503" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/rollnum" 
     app:layout_constraintVertical_bias="0.018" /> 

    <EditText 
     android:id="@+id/marks" 
     android:hint="Enter Marks" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:inputType="number" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.503" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/name" 
     app:layout_constraintVertical_bias="0.03" /> 

    <Button 
     android:id="@+id/btnupdt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:text="Update" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/marks" 
     app:layout_constraintVertical_bias="0.125" /> 

    <TextView 
     android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" 
     android:id="@+id/search" 
     android:clickable="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:text="Show Data >>" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/btnupdt" /> 
</android.support.constraint.ConstraintLayout> 

と以下のJavaファイルである

package com.example.junaidmalik.sqlitedemo; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.support.v7.app.AlertDialog; 
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; 
import android.widget.Toast; 

public class SqliteDemo extends AppCompatActivity { 

    EditText et1, et2, et3; 
    TextView search; 
    SqliteDemoHelper myData; 

    Button btnupdt; 

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

     et1 = (EditText) findViewById(R.id.rollnum); 
     et2 = (EditText) findViewById(R.id.name); 
     et3 = (EditText) findViewById(R.id.marks); 
     search = (TextView) findViewById(R.id.search); 

     btnupdt = (Button) findViewById(R.id.btnupdt); 

     btnupdt.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       int rn = Integer.parseInt(et1.getText().toString()); 
       int mks = Integer.parseInt(et3.getText().toString()); 
       String name = (String) et2.getText().toString(); 

       SqliteDemoHelper demoHelper = new SqliteDemoHelper(SqliteDemo.this); 
       SQLiteDatabase db = demoHelper.getWritableDatabase(); 

       ContentValues values = new ContentValues(); 
       values.put("sid", rn); 
       values.put("sname", name); 
       values.put("marks", mks); 

       long row = db.insert("Students", null, values); 

       demoHelper.getReadableDatabase(); 

       String projection[] = {"sid", "sname", "marks"}; 

       Cursor c = db.query("Students", projection, null, null, null, null, null); 
       c.moveToLast(); 
       System.out.println("Name is : " + c.getString(1) + " and " + "Roll Number is :" + c.getString(0)); 
       Toast.makeText(SqliteDemo.this, "Database Updated", Toast.LENGTH_SHORT).show(); 

       setContentView(R.layout.activity_sqlite_demo); 

      } 

     }); 

     search.setOnClickListener(new View.OnClickListener() { 


      @Override 
      public void onClick(View view) { 

       setContentView(R.layout.activity_sqlite_demo); 

       SqliteDemoHelper demoHelper = new SqliteDemoHelper(SqliteDemo.this); 
       SQLiteDatabase db = demoHelper.getWritableDatabase(); 
       Cursor res = db.rawQuery("Select * from Students",null); 



       if (res.getCount() == 0) { 
        showMessage("Error", "Nothing Found"); 
        return; 
       } 

       StringBuffer buffer = new StringBuffer(); 
       while (res.moveToNext()) { 
        buffer.append("sid :" + res.getString(0) + "\n"); 
        buffer.append("name : " + res.getString(1) + "\n"); 
        buffer.append("Marks :" + res.getString(2) + "\n\n"); 
       } 

       showMessage("Data is - ", buffer.toString()); 

      } 
     });} 


    public void showMessage(String title, String message) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setCancelable(true); 
     builder.setTitle(title); 
     builder.setMessage(message); 
     builder.show(); 
    } 

} 
+0

なぜコンテンツを2回設定するか –

+0

この行を削除してください "setContentView(R.layout.activity_sqlite_demo);"あなたのsearch.setOnClickListener()から取得します。 –

+0

と検索ボタンを押したときに乾杯してください。私はそれが有効か無効かを理解することができます –

答えて

0
search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setContentView(R.layout.activity_sqlite_demo); 
.... 
.. 
}}); 

検索クリックイベントからsetcontentViewを削除します。

レイアウトで表示される可能性があります。メソッドsetcontentviewを再度呼び出すと、activity_sqlite_demoを再初期化する必要があります。

+0

クイック返信ありがとうございました.. setContentviewは一時的に設定されましたが、現在は削除されていますが、目的のインテントを取得できるかどうかを確認しています。まだ希望の結果が得られていません –

+0

alertdialog Builderコードを削除し、OnClickを使用してtextviewの出力をログに記録してみてください。ダイアログボックスで問題があればOKです。また、プログラムでtextview.setClickable(true)を設定しようとします。また、オプションのすべてのsetContentViewコードを削除します。コードに複数回挿入します。 –

+0

こんにちはMohammed、問題は、btnupdtイベントのsetContentViewで発生しました。私はそれを削除したので、プログラムは働いています。あなたの助けを借りて、ありがとう、モハメッドとエイリアスガーガー –

関連する問題