0

我正在制作一个应用程序来搜索数据库,并且我有一部分在其中输入搜索详细信息,并且可能结果的名称显示在新活动的按钮上。它第一次运行良好,但是如果我从该活动中按下,然后尝试搜索与最后一个按钮结果不同的东西,但旧结果仍然存在于新结果中。

public class search_page extends Activity implements OnClickListener {
    static int number;
    static int[] numberArray = new int[8];
    static int looped;
    static int typeFound = 0;
    TextView editText1;
    Button search_button, search_button2 ; 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_page);

        editText1 = (EditText) findViewById(R.id.editText1);
        search_button = (Button) findViewById(R.id.search_button);
        search_button2 = (Button) findViewById(R.id.search_button2);
        search_button.setOnClickListener(this);
        search_button2.setOnClickListener(this);
    }

    public void onClick(View arg0) {
        switch (arg0.getId()) {
        case R.id.search_button:
            sqlStuff search1 = new sqlStuff(search_page.this);
            boolean found = false;
            String Systname = editText1.getText().toString();

            search1.open();
            String[] IDSysNames = search1.getIDSysName();
            search1.close();
            for(int i = 0; i < IDSysNames.length; i++) {
                if(Systname.equalsIgnoreCase(IDSysNames[i].toString())) {
                    found = true;
                    number = i;
                }
            }

            if(found==true) {
                Intent search = new Intent("com.MC.ChemPal.RESULT");
                startActivity(search);
            }
            else {
                Dialog d = new Dialog(this);
                d.setTitle("result not found");
                TextView tv = new TextView(this);
                d.setContentView(tv);
                d.show();
            }
            break;

        case R.id.search_button2:
            boolean found2 = false;
            boolean found3 = false;
            sqlStuff search2 = new sqlStuff(search_page.this);
            search2.open();
            String entry = editText1.getText().toString();
            String[] IDSysNames2 = search2.getIDSysName();
            String[] IDGroup = search2.getIDGroup();
            String[] IDMP = search2.getIDMP();
            String[] IDBP = search2.getIDBP();
            String[] IDComname = search2.getIDComname();
            String[] IDElement = search2.getIDElement();
            String[] IDMolarmass = search2.getIDMOLARMASS();
            search2.close();

            for(int i = 0; i < IDSysNames2.length; i++) {
                if(entry.equalsIgnoreCase(IDSysNames2[i].toString())) {
                  found2 = true;
                  found3 = true;
                  typeFound = 1; 
                  numberArray[looped] = i;
                }
                if(entry.equalsIgnoreCase(IDGroup[i].toString())) {
                  found2 = true;
                  found3 = true;
                  typeFound = 2;
                  numberArray[looped] = i;
                }
                if(entry.equalsIgnoreCase(IDMP[i].toString())) {
                  found2 = true;
                  found3 = true;
                  typeFound = 3;
                  numberArray[looped] = i;
                }
                if(entry.equalsIgnoreCase(IDBP[i].toString())) {
                  found2 = true;
                  found3 = true;
                  typeFound = 4;
                  numberArray[looped] = i;
                }

                if(entry.equalsIgnoreCase(IDComname[i].toString())) {
                  found2 = true;
                  found3 = true;
                  typeFound = 5;
                  numberArray[looped] = i;
                }

                if(IDElement[i].toString().contains(entry)) {
                  found2 = true;
                  found3 = true;
                  typeFound = 6;
                  numberArray[looped] = i;
                }

                if(entry.equalsIgnoreCase(IDMolarmass[i].toString())) {
                  found2 = true;
                  found3 = true;
                  typeFound = 7;
                  numberArray[looped] = i;
                }

                if(found2 == true) {
                    looped++;
                }
                found2 = false;

            }
            if (found3==true) {
                Intent searching2 = new    Intent("com.MC.ChemPal.SEARCHLIST"); 
                startActivity(searching2);
            }
            else {
                Dialog d = new Dialog(this);
                d.setTitle("result not found");
                TextView tv = new TextView(this);
                d.setContentView(tv);
                d.show();
            }

            break;
        }
    }

    public static int returnNum() {
        return number;
    }

    public static int[] returnNumArray() {
        return numberArray;
    }

    public static int returnlooped() {
       return looped;
    }
}

然后该活动链接到该活动。

public class searchlist extends Activity implements OnClickListener {
    static int buttonPress = 0;
    int loops = 0;

    public void onCreate(Bundle savedinstance){
        super.onCreate(savedinstance);
        setContentView(R.layout.searchlist);

        Button[] mybuttons = new Button[10];

        mybuttons[0] = (Button) findViewById(R.id.search1);
        mybuttons[1] = (Button) findViewById(R.id.search2);
        mybuttons[2] = (Button) findViewById(R.id.search3);
        mybuttons[3] = (Button) findViewById(R.id.search4);
        mybuttons[4] = (Button) findViewById(R.id.search5);
        mybuttons[5] = (Button) findViewById(R.id.search6);
        mybuttons[6] = (Button) findViewById(R.id.search7);
        mybuttons[7] = (Button) findViewById(R.id.search8);
        mybuttons[8] = (Button) findViewById(R.id.search9);
        mybuttons[9] = (Button) findViewById(R.id.search10);
        int i = 0;

       if(!mybuttons[0].getText().equals("-"))
       {
        mybuttons[0].setText("-");
        mybuttons[0].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[1].getText().equals("-"))
       {
        mybuttons[1].setText("-");
        mybuttons[1].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[2].getText().equals("-"))
       {
        mybuttons[2].setText("-");
        mybuttons[2].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[3].getText().equals("-"))
       {
        mybuttons[3].setText("-");
        mybuttons[3].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[4].getText().equals("-"))
       {
        mybuttons[4].setText("-");
        mybuttons[4].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[5].getText().equals("-"))
       {
        mybuttons[5].setText("-");
        mybuttons[5].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[6].getText().equals("-"))
       {
        mybuttons[6].setText("-");
        mybuttons[6].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[7].getText().equals("-"))
       {
        mybuttons[7].setText("-");
        mybuttons[7].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[8].getText().equals("-"))
       {
        mybuttons[8].setText("-");
        mybuttons[8].setVisibility(View.INVISIBLE);
       }
       if(!mybuttons[9].getText().equals("-"))
       {
        mybuttons[9].setText("-");
        mybuttons[9].setVisibility(View.INVISIBLE);
       }


        sqlStuff searching = new sqlStuff(searchlist.this);

        searching.open();
        String[] IDSysNames = searching.getIDSysName();
        loops = search_page.returnlooped();
        int[] teacup = search_page.returnNumArray();
        searching.close();


        for(i=0; i < loops; i++ )
        {
            if(IDSysNames[teacup[i]] != null)
            {
            mybuttons[i].setText(IDSysNames[teacup[i]]);
            }
        }

        if(!mybuttons[0].getText().equals("-"))
        {
        mybuttons[0].setOnClickListener(this);
        mybuttons[0].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[1].getText().equals("-"))
        {
        mybuttons[1].setOnClickListener(this);
        mybuttons[1].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[2].getText().equals("-"))
        {
        mybuttons[2].setOnClickListener(this);
        mybuttons[2].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[3].getText().equals("-"))
        {
        mybuttons[3].setOnClickListener(this);
        mybuttons[0].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[4].getText().equals("-"))
        {
        mybuttons[4].setOnClickListener(this);
        mybuttons[4].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[5].getText().equals("-"))
        {
        mybuttons[5].setOnClickListener(this);
        mybuttons[5].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[6].getText().equals("-"))
        {
        mybuttons[6].setOnClickListener(this);
        mybuttons[6].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[7].getText().equals("-"))
        {
        mybuttons[7].setOnClickListener(this);
        mybuttons[7].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[8].getText().equals("-"))
        {
        mybuttons[8].setOnClickListener(this);
        mybuttons[8].setVisibility(View.VISIBLE);
        }
        if(!mybuttons[9].getText().equals("-"))
        {
        mybuttons[9].setOnClickListener(this);
        mybuttons[9].setVisibility(View.VISIBLE);
        }
    }

    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        switch (arg0.getId()) {

        case 
        R.id.search1:
         buttonPress = 0;
         Intent search = new Intent("com.MC.ChemPal.RESULT2");
         startActivity(search);
         break;

        case 
        R.id.search2:
            buttonPress = 1;
            Intent search2 = new Intent("com.MC.ChemPal.RESULT2");
            startActivity(search2);

            break;

        case 
        R.id.search3:
            buttonPress = 2;
            Intent search3 = new Intent("com.MC.ChemPal.RESULT2");
            startActivity(search3);
            break;


        case 
        R.id.search4:
            buttonPress=3;
            Intent search4 = new Intent("com.MC.ChemPal.RESULT2");
            startActivity(search4);
            break;


        case 
        R.id.search5:
            buttonPress=4;
            Intent search5 = new Intent("com.MC.ChemPal.RESULT2");
         startActivity(search5);
            break;

        case 
        R.id.search6:
            buttonPress=5;
            Intent search6 = new Intent("com.MC.ChemPal.RESULT2");
         startActivity(search6);
            break;


        case 
        R.id.search7:
            buttonPress=6;
            Intent search7 = new Intent("com.MC.ChemPal.RESULT2");
           startActivity(search7);
            break;

        case
        R.id.search8:
            buttonPress=7;
            Intent search8 = new Intent("com.MC.ChemPal.RESULT2");
            startActivity(search8);
            break;

        case
        R.id.search9:
            buttonPress=8;
            Intent search9 = new Intent("com.MC.ChemPal.RESULT2");
            startActivity(search9);
            break;

        case
        R.id.search10:
            buttonPress=9;
            Intent search10 = new Intent("com.MC.ChemPal.RESULT2");
            startActivity(search10);
            break;

        }

    }

    public static int getButtonPress() {
        return buttonPress;
    }

     public void onResume(){
    super.onResume();
    setContentView(R.layout.searchlist);

  Button[] mybuttons = new Button[10];
   onResume();
   mybuttons[0] = (Button) findViewById(R.id.search1);
   mybuttons[1] = (Button) findViewById(R.id.search2);
   mybuttons[2] = (Button) findViewById(R.id.search3);
   mybuttons[3] = (Button) findViewById(R.id.search4);
   mybuttons[4] = (Button) findViewById(R.id.search5);
   mybuttons[5] = (Button) findViewById(R.id.search6);
   mybuttons[6] = (Button) findViewById(R.id.search7);
   mybuttons[7] = (Button) findViewById(R.id.search8);
   mybuttons[8] = (Button) findViewById(R.id.search9);
   mybuttons[9] = (Button) findViewById(R.id.search10);
   int i = 0;


   if(!mybuttons[0].getText().equals("-"))
   {
    mybuttons[0].setText("-");
    mybuttons[0].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[1].getText().equals("-"))
   {
    mybuttons[1].setText("-");
    mybuttons[1].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[2].getText().equals("-"))
   {
    mybuttons[2].setText("-");
    mybuttons[2].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[3].getText().equals("-"))
   {
    mybuttons[3].setText("-");
    mybuttons[3].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[4].getText().equals("-"))
   {
    mybuttons[4].setText("-");
    mybuttons[4].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[5].getText().equals("-"))
   {
    mybuttons[5].setText("-");
    mybuttons[5].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[6].getText().equals("-"))
   {
    mybuttons[6].setText("-");
    mybuttons[6].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[7].getText().equals("-"))
   {
    mybuttons[7].setText("-");
    mybuttons[7].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[8].getText().equals("-"))
   {
    mybuttons[8].setText("-");
    mybuttons[8].setVisibility(View.INVISIBLE);
   }
   if(!mybuttons[9].getText().equals("-"))
   {
    mybuttons[9].setText("-");
    mybuttons[9].setVisibility(View.INVISIBLE);
   }


    sqlStuff searching = new sqlStuff(searchlist.this);

    searching.open();
    String[] IDSysNames = searching.getIDSysName();
    loops = search_page.returnlooped();
    int[] teacup = search_page.returnNumArray();
    searching.close();


    for(i=0; i < loops; i++ )
    {
        if(IDSysNames[teacup[i]] != null)
        {
        mybuttons[i].setText(IDSysNames[teacup[i]]);
        }
    }

    if(!mybuttons[0].getText().equals("-"))
    {
    mybuttons[0].setOnClickListener(this);
    mybuttons[0].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[1].getText().equals("-"))
    {
    mybuttons[1].setOnClickListener(this);
    mybuttons[1].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[2].getText().equals("-"))
    {
    mybuttons[2].setOnClickListener(this);
    mybuttons[2].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[3].getText().equals("-"))
    {
    mybuttons[3].setOnClickListener(this);
    mybuttons[0].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[4].getText().equals("-"))
    {
    mybuttons[4].setOnClickListener(this);
    mybuttons[4].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[5].getText().equals("-"))
    {
    mybuttons[5].setOnClickListener(this);
    mybuttons[5].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[6].getText().equals("-"))
    {
    mybuttons[6].setOnClickListener(this);
    mybuttons[6].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[7].getText().equals("-"))
    {
    mybuttons[7].setOnClickListener(this);
    mybuttons[7].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[8].getText().equals("-"))
    {
    mybuttons[8].setOnClickListener(this);
    mybuttons[8].setVisibility(View.VISIBLE);
    }
    if(!mybuttons[9].getText().equals("-"))
    {
    mybuttons[9].setOnClickListener(this);
    mybuttons[9].setVisibility(View.VISIBLE);
    }
    }   

 }
4

1 回答 1

0

您更改了视图中按钮的状态。移动到另一个活动并返回不会重置视图。它在您的应用程序中维护状态,这将使不知道状态成为更大的问题。

在以编程方式设置状态的地方,我建议覆盖 onResume 以将按钮的状态设置为您想要的位置。这将在您的活动最初启动时调用,如果它重新启动,以及每次您的活动被带到前台。

参考:Android生命周期活动

附加信息:您发布了 2 个活动(search_page 和 searchlist),其中 search_page 明确称为 searchlist。你提到你的问题是点击后退按钮。问题实际上并不在后面——这显然是有效的,它是活动在恢复时所做的事情。

从您的上一条评论来看,如果按钮中有文本,您似乎正在使按钮可见,因此问题不在于使它们可见-这是有效的,问题是错误的按钮具有文本。

你应该什么时候清除它们?当您返回 search_page?如果是这样,请让您在 search_page 中的 onResume 清除所有按钮中的文本。

于 2013-04-29T18:37:43.030 回答