2016-05-12 43 views
0

我在我的Mainactivity中創建了一個帶空值和按鈕的Textview,並使用按鈕單擊上的AsyncTask方法從sql數據庫服務器獲取了一些數據並存儲到我的textview中。然後我打電話給另一個活動activity2來表示something.and我使用intent返回到Mainactivity。但是我不能在textview中查看以前設置的數據。它顯示空值。我想設置它以前提取data.how我可以設置?在調用意圖後將數據從數據庫提取到textview

公共類MainActivity延伸活動{

public ImageView prev, now, next; 
String depvisitid; 
public TextView display, bottom, ptname, docname; 
public String tokenh,tokenext,tokennow; 
public String pname,pnamenext,pnamenow; 
public boolean status; 
public String drname,current; 


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

    prev = (ImageView) findViewById(R.id.previmg); 
    now = (ImageView) findViewById(R.id.token); 
    next = (ImageView) findViewById(R.id.nextimg); 
    display = (TextView) findViewById(R.id.textView2); 
    ptname = (TextView) findViewById(R.id.textView3); 
    bottom = (TextView) findViewById(R.id.tokennum); 
    docname = (TextView) findViewById(R.id.textView); 

    // Connect runner = new Connect(); 
    // runner.execute(); 


    prev.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      // String sleepTime = time.getText().toString(); 

     } 
    }); 
    now.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      display.setText(tokenh); 
      ConnectNow nw = new ConnectNow(); 
      nw.execute(); 

      Intent i = new Intent(getApplicationContext(), StatusUpdate.class); 
      i.putExtra("patientname", pname); 
      i.putExtra("tokenno", tokenh); 
      i.putExtra("depvisitid", depvisitid); 

      startActivity(i); 




     } 

    }); 

    next.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Connect runner = new Connect(); 
      runner.execute(); 

     } 
    }); 




} 



public void onBackPressed() { 
    // TODO Auto-generated method stub 
    // super.onBackPressed(); 
    // finish(); 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    finish(); 
} 

class Connect extends AsyncTask<String, String, String> { 


    @Override 
    protected String doInBackground(String... params) { 
     try { 
      Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance(); 

     } catch (InstantiationException e1) { 
      e1.printStackTrace(); 
     } catch (IllegalAccessException e1) { 
      e1.printStackTrace(); 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
     String username = "aaa"; 
     String password = "sssss"; 
     Connection DbConn = null; 
     try { 
      DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://xxx.xxx.x.x:1433/DATABASENAME;user=" + username + ";password=" + password); 
      Log.i("Connection", "openjjj"); 

     } catch (SQLException e1) { 

      e1.printStackTrace(); 
     } 

     Log.w("Connection", "open"); 
     Statement stmt = null; 
     try { 
      stmt = DbConn.createStatement(); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 
     ResultSet reset1 = null; 


     try { 
      reset1 = stmt.executeQuery(" select a.TOKENNO,b.FNAME,a.TOKENSTATUS,e.EMPFNAME,a.DEPVISITID from DEPTVISIT a,PATIENT_MASTER b,APP_EMPLOYEE e where a.PID=b.PID and (a.TOKENSTATUS='O' or a.TOKENSTATUS='S') and e.EMPID=a.EMPID and a.EMPID=2 and CONVERT(date,a.OPDATE)='2016-05-09' order by TOKENNO desc;"); 
      while (reset1.next()) { 

       tokenh = reset1.getString("TOKENNO"); 
       pname = reset1.getString("FNAME"); 
       drname = reset1.getString("EMPFNAME"); 
       depvisitid= reset1.getString("DEPVISITID"); 
      } 


     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 


     try { 
      DbConn.close(); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 

     return tokenh; 

    } 

    protected void onPostExecute(String result) { 


     bottom.setText(tokenh); 
     ptname.setText(pname); 
     docname.setText(drname); 


    } 







} 

class ConnectNow extends AsyncTask<String, String, Boolean> { 


    @Override 
    protected Boolean doInBackground(String... params) { 
     try { 
      Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance(); 

     } catch (InstantiationException e1) { 
      e1.printStackTrace(); 
     } catch (IllegalAccessException e1) { 
      e1.printStackTrace(); 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
     String username = "aaaaa"; 
     String password = "ssssss"; 
     Connection DbConn = null; 
     try { 
      DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://xxx.xxx.x.x:1433/DATABASENAME;user=" + username + ";password=" + password); 
      Log.i("Connection", "openjjj****"); 

     } catch (SQLException e1) { 

      e1.printStackTrace(); 
     } 

     Log.w("Connection", "open****"); 
     Statement stmt = null; 
     try { 
      stmt = DbConn.createStatement(); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 



     try { 
      int noOfRows = stmt.executeUpdate(" update DEPTVISIT set TOKENSTATUS='S' where DEPVISITID=" + depvisitid); 
      if (noOfRows > 0) { 
       status = true; 
       System.out.println("status updated to S"); 
      } 



     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 


     try { 
      DbConn.close(); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 

     return status; 

    } 
protected void onPostExecute(Boolean result) { 


     bottom.setText(tokenh); 
     ptname.setText(pnamenext); 
     docname.setText(drname); 


    } 


} 
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) { 

     Intent settings=new Intent(getApplicationContext(),Settings.class); 
     startActivity(settings); 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

第二個活動StatusUdate.java

公共類StatusUpdate延伸活動{ 公共字符串tokenstatN,tokenstatY;

Button visited, notvisited; 
String pname,tokennum,depvisitid; 
TextView patnam,tknum; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.statusupdate); 
    visited = (Button) findViewById(R.id.button); 
    notvisited = (Button) findViewById(R.id.button2); 
    patnam= (TextView) findViewById(R.id.textView4); 
    tknum= (TextView) findViewById(R.id.textView5); 
    Bundle extras = getIntent().getExtras(); 
    pname = extras.getString("patientname"); 
    tokennum = extras.getString("tokenno"); 
    depvisitid = extras.getString("depvisitid"); 

    patnam.setText(pname); 
    tknum.setText(tokennum); 

    visited.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Visit vt= new Visit(); 
      vt.execute(); 

      Intent i = new Intent(getApplicationContext(), MainActivity.class); 

      startActivity(i); 
     } 
    }); 
    notvisited.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      NotVisit n = new NotVisit(); 
      n.execute(); 

      Intent i = new Intent(getApplicationContext(), MainActivity.class); 

      startActivity(i); 
     } 
    }); 
} 

類NotVisit擴展的AsyncTask {

boolean status = false; 

    @Override 
    protected Boolean doInBackground(String... params) { 
     try { 
      Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance(); 

     } catch (InstantiationException e1) { 
      e1.printStackTrace(); 
     } catch (IllegalAccessException e1) { 
      e1.printStackTrace(); 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
     String username = "aaaaa"; 
     String password = "sssss"; 
     Connection DbConn = null; 
     try { 
      DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://xxx.xxx.x.x:1433/DATABASENAME;user=" + username + ";password=" + password); 
      Log.i("Connection", "openhhhh"); 

     } catch (SQLException e1) { 

      e1.printStackTrace(); 
     } 

     Log.w("Connection", "openlll"); 
     Statement stmt = null; 
     try { 
      stmt = DbConn.createStatement(); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 


     try { 

      int noOfRows = stmt.executeUpdate(" update DEPTVISIT set TOKENSTATUS='N' where DEPVISITID=" + depvisitid); 
      if (noOfRows > 0) { 
       status = true; 
      } 


      try { 
       DbConn.close(); 
      } catch (SQLException e1) { 
       e1.printStackTrace(); 
      } 


     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     Log.d("status", String.valueOf(status)); 
     return status; 

    } 
} 
+1

您是否正在完成活動?請顯示一些代碼。 –

回答

0

每當你不妨去前一個畫面,總是完成Activity是在上面。在你的情況下,你總是創建MainActivity的新實例,這是返回時變爲null的原因。嘗試在您的StatusUpdate.java中使用此功能。

visited.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Visit vt= new Visit(); 
      vt.execute(); 

      StatusUpdate.this.finish(); 
     } 
}); 

notvisited.setOnClickListener(new View.OnClickListener() { 
@Override 
     public void onClick(View v) { 

      NotVisit n = new NotVisit(); 
      n.execute(); 

      StatusUpdate.this.finish(); 
     } 
}); 
0

您可以將您的活動類的靜態字段檢索到的文本,但它是更好的保存,並在活動休閒恢復。
所以修改你的活動,如:

@Override 
public void onCreate(Bundle b) { 
    // activity initialization 
    // textView = ... 
    if (b != null) { 
    textView.setText(b.getString("dbtext")); 
    } 
} 

@Override 
protected void onSaveInstanceState(Bundle b) { 
    super.onSaveInstanceState(b); 
    b.putString("dbtext", textView.getText()); 
}