2017-11-13 6 views
0

저는 Android 개발에서 배우는 사람입니다. 나는 당신의 도움이 필요한 프로그램에서 SQLite 데이터베이스를 배우고있었습니다.Clickable Text보기가 작동하지 않습니다.

내가 개발 한 프로그램은 사용자로부터 입력을 받고 SQLite 데이터베이스에 값을 저장하며, 저장된 데이터를 표시하기 위해 클릭 가능한 텍스트보기도 만들었습니다.

내가 직면하는 문제는 프로그램을 실행하고 직접 데이터 표시 (Textview)를 클릭하면 경고 대화 상자가 열리고 데이터를 표시하지만 데이터를 입력하면 그 다음에 " 텍스트 표시 "가 비활성화됩니다.

도와주세요.

다음은 XML 및 Java 파일입니다. 아래

<?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> 

XML 검색 클릭 이벤트에서 자바 파일

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

OnDial을 사용하여 alertdialog 빌더 코드를 제거하고 textview의 출력을 기록하십시오. 대화 상자에서 문제가있는 경우. 또한 textview.setClickable (true)을 프로그래밍 방식으로 설정하려고합니다. 또한 모든 선택적 setContentView 코드를 제거하십시오. 코드에 여러 번 넣습니다. –

+0

안녕하세요 모하메드, 문제는 btnupdt 이벤트의 setContentView에서 발생했습니다. 프로그램을 삭제 했으므로 프로그램이 작동합니다. 모하메드와 Aliasgar에게 도움을 주셔서 감사합니다. –