-4
현재 네트워크를 검색하여 ListView에서 결과를 출력하는 안드로이드 응용 프로그램을 만들고 있습니다. 그러나 네트워크에서 탭하는 위치로 만들려고하는데 데이터를 데이터베이스에 저장 한 다음 보여줄 페이지로 보냅니다. 당신이 선택한 항목을 클릭하면 항목의 값을 올바르게 부분 표시하고 기본 활동에 잘 표시되지만 표시 페이지 활동에 변수를 사용하려고하면 값이 null로 설정됩니다. 여기 변수가 활동간에 데이터를 잃어 버리는 이유를 모르겠습니다.
networklist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String grabItemInfo = wifis[position];
Network_Info info1 = new Network_Info();
info1.setMainBSSID(grabItemInfo.substring(grabItemInfo.indexOf('#') +1, grabItemInfo.lastIndexOf('#')));
info1.setMainSSID(grabItemInfo.substring(0,(grabItemInfo.indexOf('#'))));
info1.setMainCAP(grabItemInfo.substring(grabItemInfo.lastIndexOf('#')+1, grabItemInfo.length()));
Toast toastTest = Toast.makeText(getApplicationContext(), info1.getMainSSID(), Toast.LENGTH_SHORT);
Toast toastTest2 = Toast.makeText(getApplicationContext(), info1.getMainBSSID(), Toast.LENGTH_SHORT);
Toast toastTest3 = Toast.makeText(getApplicationContext(), info1.getMainCAP(), Toast.LENGTH_SHORT);
toastTest.show();
toastTest2.show();
toastTest3.show();
ContentValues dbv = new ContentValues();
dbv.put("SSID", info1.getMainSSID());
dbv.put("BSSID", info1.getMainBSSID());
dbv.put("CAPABILITIES", info1.getMainCAP());
netDataBase.insert("netDataTable", "NULL", dbv);
Intent intent = new Intent(getApplicationContext(), Attack_Page.class);
startActivity(intent);
}
});
내 디스플레이 페이지입니다 : 여기
는 클릭 리스너의 주요 활동이다
:
public class Attack_Page extends Network_List {
protected void onCreate(Bundle SavedIS){
super.onCreate(SavedIS);
setContentView(R.layout.attack_page);
TextView SSIDview = (TextView) findViewById(R.id.SSIDView);
TextView BSSIDview = (TextView) findViewById(R.id.BSSIDView);
TextView CAPview = (TextView) findViewById(R.id.CAPView);
Button backButton = (Button) findViewById(R.id.backbutton);
Intent intent = getIntent();
//String MainSSIDP = intent.getStringExtra(getMainSSID());
Network_Info info1 = new Network_Info();
Toast testToast = Toast.makeText(getApplicationContext(), info1.getMainSSID(), Toast.LENGTH_SHORT);
testToast.show();
//Cursor IDselect = netDataBase.rawQuery("SELECT SSID FROM netDataTable WHERE SSID = "+getMainSSID()+"", wifis);
//SSIDview.setText(IDselect.toString());
backButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent bintent = new Intent(getApplicationContext(), Network_List.class);
startActivity(bintent);
}
});
}
} 여기
내 세터와 게터 클래스입니다
public class Network_Info {
private String mainCAP;
private String mainSSID;
private String mainBSSID;
public void setMainSSID(String newMainSSID){
mainSSID = newMainSSID;
}
public void setMainBSSID(String newMainBSSID){
mainBSSID = newMainBSSID;
}
public void setMainCAP(String newMainCAP){
mainCAP = newMainCAP;
}
public String getMainSSID(){
return mainSSID;
}
public String getMainBSSID(){
return mainBSSID;
}
public String getMainCAP(){
return mainCAP;
}
}
디플레이 페이지에서 Network_info를 인스턴스화하고 실제로 데이터베이스에서 데이터를 읽지 않습니다. –
관련이 없지만'netDataBase.insert ("netDataTable", "NULL", dbv);는 두 번째로 'null'을 가져야합니다. param, 문자 그대로 "NULL"이 아닌 문자열 –
또한 정말로 데이터베이스가 필요합니까? 당신은 Intent에서 직접 데이터를 전달할 수 있어야합니다. –