调用intent

时间:2016-05-12 08:36:18

标签: android database android-intent

我在我的Mainactivity中创建了一个带有空值的Textview和按钮,并在按钮点击时使用AsyncTask方法从sql数据库服务器获取了一些数据并存储到我的textview中。然后我调用另一个活动activity2的意图来显示某些东西。我使用intent返回到我的Mainactivity。但我无法在textview中查看以前设置的数据。它显示空值。我想设置它以前获取的数据。我可以设置吗?

公共类MainActivity扩展了Activity {

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

public class StatusUpdate extends Activity {     public String 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;

    }
}

2 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:0)

每当您想要转到上一个屏幕时,请始终完成位于顶部的$('#content').html("Your HTML here"); 。在您的情况下,您始终在创建Activity的新实例,这是您返回时获取null的原因。请尝试在MainActivity

中使用此功能
StatusUpdate.java