2016-08-24 15 views
-3

我的應用程序包含片段類DB類MainActivity類別 .......當我點擊插入按鈕這個節目「數據未插入」 ,,,,,我不明白...... WHERE IS問題...........這是我的代碼: MainActivity類別:插入由按鈕,在片段數據庫在Android Studio中

package ir.hashem.navfragtest; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_camera) { 
     fr1 fragment = new fr1(); 
     android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.fragment11, fragment); 
     fragmentTransaction.commit(); 


    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
} 

片段類

package ir.hashem.navfragtest; 

public class fr1 extends Fragment 
{ 

public fr1() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    v=inflater.inflate(R.layout.fr1, container, false); 
    mydb=new database(getActivity()); 

    btninsert= (Button) v.findViewById(R.id.btninsert); 
    btndelete= (Button) v.findViewById(R.id.btndelete); 
    name= (EditText) v.findViewById(R.id.etjens); 

    // id= (EditText) v.findViewById(R.id.editText3); 

    btndelete.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      id= (EditText) v.findViewById(R.id.etid); 
      Integer isDeleted=mydb.Delete(id.getText().toString()); 
      if(isDeleted>0) 
       Toast.makeText(fr1.this.getActivity(), "DATA DELETED", Toast.LENGTH_LONG).show(); 
      else 
       Toast.makeText(fr1.this.getActivity(), "DATA NOT DELETED", Toast.LENGTH_LONG).show(); 
     } 
    }); 

    btninsert.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      String n=name.getText().toString(); 
      boolean isinserted = mydb.inserdata(n); 
      if (isinserted == true) 
       Toast.makeText(fr1.this.getActivity(), "DATA INSERTED", Toast.LENGTH_LONG).show(); 
      else 
       Toast.makeText(fr1.this.getActivity(), "DATA NOT INSERTED", Toast.LENGTH_LONG).show(); 
     } 
    }); 

    return v; 
} 
} 

. 
. 
. 

數據庫類

package ir.hashem.navfragtest; 

public class database extends SQLiteOpenHelper{ 

public static final String DATABASE_NAME="market"; 
public static final String tablename="jens"; 
public static final String col1="id"; 
public static final String col2="name"; 

public database(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table jens (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT not null)"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS jens"); 
    onCreate(db); 
} 

public boolean inserdata(String n) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues contentValues=new ContentValues(); 
    contentValues.put("name",n); 
    long result=db.insert("jens", null, contentValues); 
    if (result == -1) 
     return false; 
    else 
     return true; 
} 

public Cursor getAlldata() 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    Cursor res=db.rawQuery("select * from jens",null); 
    return res; 
} 
public boolean updateData(String id,String n) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues contentValues=new ContentValues(); 
    contentValues.put(col1,id); 
    contentValues.put(col2,n); 
    db.update(tablename,contentValues,"id = ?",new String[] {id}); 
    return true; 
} 
public Integer Delete(String id) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    return db.delete(tablename,"id = ?",new String[] {id}); 
} 
} 
+0

試圖獲得登錄名的細節** insertdata(N)**在DB類。 *例如:Log.d( 「名」,N); * –

回答

0

使用數據庫實例。將此添加到您的數據庫類。

private static database databaseInstance = null; 

public static database getInstance(Context context) { 

    if (databaseInstance == null) { 

     databaseInstance = new database(context); 

    } 

    return databaseInstance; 

} 

在您的片段類初始化數據庫變量這樣

mydb = database.getInstance(getActivity());