0

从我开始使用android studio开始已经过去了一个月,此时我被卡住了,必须通过一组<EditText/>值从MainActivityUpdateActivity,然后将这些值发送到Sqlite数据库以更新表。Android:将值传递给另一个活动的功能,然后传递给Sqlite数据库

我已经完成:从MainActivity

成功发送值的<EditText/>UpdateActivity<EditText/>

我也怎么做,从MainActivity

public class MainActivity extends AppCompatActivity { 
    DatabaseHelper myDb; 
    EditText editName, editSurname, editMarks; 
    Button btnUpdate; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myDb = new DatabaseHelper(this); 

    editName = (EditText) findViewById(R.id.UpdName); 
    editSurname = (EditText) findViewById(R.id.editTextSurname); 
    editMarks = (EditText) findViewById(R.id.UpdMarks); 
    btnUpdate = (Button)findViewById(R.id.btnUpdate); 

    btnUpdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String MainName = editName.getText().toString(); 
      String MainSurname = editSurname.getText().toString(); 
      String MainMarks = editMarks.getText().toString(); 

      Intent UpdateAct = new Intent(MainActivity.this, UpdateActivity.class); 
      UpdateAct.putExtra("Name", MainName); 
      UpdateAct.putExtra("SurName",MainSurname); 
      UpdateAct.putExtra("Marks", MainMarks); 
      startActivity(UpdateAct); 
     } 
    }); 
} 

然后UpdateActivity内:

public class UpdateActivity extends AppCompatActivity { 
DatabaseHelper myDb; 
Button btnUpd; 
EditText editTextId, editUpdtName, editUpdSurname, editUpdMarks; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_update); 

    Intent getData = getIntent(); 
    String Name = getData.getStringExtra("Name"); 
    String SurName = getData.getStringExtra("SurName"); 
    String Marks = getData.getStringExtra("Marks"); 

    editTextId = (EditText)findViewById(R.id.editTextID); 
    editUpdtName = (EditText)findViewById(R.id.UpdName); 
    editUpdSurname = (EditText)findViewById(R.id.UpdSurname); 
    editUpdMarks = (EditText)findViewById(R.id.UpdMarks); 
    btnUpd = (Button)findViewById(R.Id.btnUpd); 

    editUpdtName.setText(Name); 
    editUpdSurname.setText(SurName); 
    editUpdMarks.setText(Marks); 
} 

什么我被困在是将这些值发送到一个名为updateData(); 对于我试图直接从MainActivity使用值UpdateActivity但未能功能,那我就投那些<EditText/>,并用它在函数内部但再次失败。

里面我UpdateActivity

..//  
     editUpdtName.setText(Name); 
     editUpdSurname.setText(SurName); 
     editUpdMarks.setText(Marks); 
     //updateData(Name, SurName, Marks); 
     updateData(); 
    } 

//function definiton 
// public void updateData(final String Name, final String SurName, final String Marks) 
    public void updateData() 
    { 
     btnUpd.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
//    boolean isUpdated = myDb.updateData(editTextId.getText().toString(), Name,SurName, Marks); 
       boolean isUpdated = myDb.updateData(editTextId.getText().toString(), editUpdtName.getText().toString(), 
         editUpdSurname.getText().toString(), editUpdMarks.getText().toString()); 
      if(isUpdated == true){ 
       Toast.makeText(UpdateActivity.this, "Data Updated Successfully!", Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
        Toast.makeText(UpdateActivity.this, "Data NOT Updated!", Toast.LENGTH_SHORT).show(); 
     } 

    } 
     }); 
    } 
} 

应用崩溃每次功能updateData();被调用,以确保是真正的原因我甚至有评论,也试图把它在一个处理器3000ms后运行它,正如所期望的那样,它在这段时间之后坠毁了。

通过初始化数据库来解决它。

myDb = new DatabaseHelper(this);

+0

就像我之前提到的,_刚开始学习这个_轻松对降低成绩的人! – user5173426

回答

2

你忘了初始化myDb。 在您的onCreate()方法中初始化它。

myDb = new DatabaseHelper(this); 
+0

我已经这样做了,对于不在问题中添加它而道歉! – user5173426

+0

好的。那么'myDb'呢?你初始化它吗? –

+0

我不能相信我错过了!我确实喜欢大量的其他东西来解决它,但忽略了初始化'myDb''.- – user5173426

0

为什么不只是值传递给updateData()

editUpdtName.setText(Name); 
editUpdSurname.setText(SurName); 
editUpdMarks.setText(Marks); 
updateData(Name, SurName, Marks); 
+0

我也尝试过。它崩溃! – user5173426

+0

然后请将堆栈跟踪附加到您的问题。 – Egor

+0

立即添加! – user5173426

0

你初始化了btnUpd吗?我不能在你的onCreate()

btnUpd = (Button) findViewById(...) 
相关问题