我执行某些操作后返回按钮的活动时,按钮上的OnClick()不起作用

时间:2013-04-01 10:31:51

标签: android onclick onclicklistener

我已调试并发现在从主活动启动的活动回来后,控制流从未到达主要活动中的OnClick()方法。

怀疑这与暂停'或者'恢复'状态。

换句话说, 主要活动是A.和从A be B发起的活动。 所以,从A i开始并在B上工作。当我返回A(使用硬件按钮' back')时,onClick函数似乎没有被调用。

出于隐私目的,我删除了下面显示的一些代码,如果编译会产生错误,但在我的实际代码中,我调用的活动B和列表视图运行良好。

请帮忙! :)

我的代码:

import java.io.Serializable;
import java.util.ArrayList;

import org.json.JSONObject;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;

public class Main extends Activity implements Serializable,
        OnClickListener {

    // fetch  data in form of string from the url
    public String InternetData;


     public static ArrayList<String> List;
    public static Boolean hasRanOnce;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Initialize();
        // begin AsyncTask doInBackground 
        RequestData();
    }

    private void Initialize() {
        hasRanOnce = Boolean.FALSE;

        List = new ArrayList<String>();
    }

    private void RequestData() {
            //string is a url, I removed it from here

        GetMethodEx requestObject = new GetMethodEx();
        requestObject.setActivity(this);
        requestObject.execute(string);
    }

    // function called by OnPostExecute of GetMethodEx
    public void BuildNodes() {

        try {
            // create JSON objects  
            rootNode = rootNode.createNode(jObject);

            passList.add(rootNode);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    protected void StartList() {
        // start new activity for publishing the results as a list
        Intent myList = new Intent(this, List.class);
        myList.putExtra("passList", passList);
        hasRanOnce = Boolean.TRUE;
        startActivity(myList);

    }

/// ##我可能面临问题

    @Override
    public void onClick(View v) {


        switch (v.getId()) {
        case R.id.Display:
            StartList();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_menu, menu);
        return true;
    }

}

2 个答案:

答案 0 :(得分:0)

android:onClick="Click"

将上述代码放入xml文件中,然后在您的活动中编写该函数 例如

public void Click(View v)
{
// do something 
}

或者你可以这样做

button=(button) findViewById(R.id.btn);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
                                         }
    });

答案 1 :(得分:0)

    Try this code

  button.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub


    Intent myList = new Intent(this, List.class);
            myList.putExtra("passList", passList);
            hasRanOnce = Boolean.TRUE;
            startActivity(myList);
                }
            });