簡體   English   中英

變量在活動之間丟失數據,我不知道為什么?

[英]Variables losing data between activities and I don't know why?

我目前正在創建一個 android 應用程序,它掃描網絡並在 ListView 中輸出結果,但我正在嘗試將其發送到我點擊網絡的位置並將數據保存在數據庫中,然后將您發送到一個頁面以顯示您的內容選擇但當我單擊一個項目時,它會正確地對值進行子串並在主活動上正常顯示,但是當我嘗試在顯示頁面活動上使用變量時,值設置為空。

這是點擊偵聽器中的主要活動:

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);

        }


    });

}

}

這是我的 setter 和 getter 類:

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;

}

}

發現你必須傳遞帶有意圖的變量:

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");

不過還是謝謝你的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM