1

我已经调试过,发现从主活动启动的活动返回后,控制流永远不会到达主活动OnClick()中的方法。

怀疑这与“暂停”或“恢复”状态有关。

换句话说,主要活动是 A。从 A 启动的活动是 B。所以,我从 A 启动并在 B 上工作。当我返回 A(使用硬件按钮“返回”)时,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;
    }

}
4

2 回答 2

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
                                         }
    });
于 2013-04-01T10:39:07.053 回答
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);
                }
            });
于 2013-04-01T10:42:18.257 回答