2016-11-16 1 views
-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; 

} 

}

+3

디플레이 페이지에서 Network_info를 인스턴스화하고 실제로 데이터베이스에서 데이터를 읽지 않습니다. –

+1

관련이 없지만'netDataBase.insert ("netDataTable", "NULL", dbv);는 두 번째로 'null'을 가져야합니다. param, 문자 그대로 "NULL"이 아닌 문자열 –

+0

또한 정말로 데이터베이스가 필요합니까? 당신은 Intent에서 직접 데이터를 전달할 수 있어야합니다. –

답변

0

는 의도로 변수를 전달해야 알아 냈 :

Intent intent = new Intent(getApplicationContext(), Attack_Page.class); 
      intent.putExtra("EXTRA_SSID", info1.getMainSSID()); 
      intent.putExtra("EXTRA_BSSID", info1.getMainBSSID()); 
      intent.putExtra("EXTRA_CAP", info1.getMainCAP()); 
      startActivity(intent); 

이 그럼 당신은 putExtra에서 설정 키()하지만 도움을

String MainSSIDP = intent.getStringExtra("EXTRA_SSID"); 

감사를 사용!

관련 문제