1

デバッグしたところ、メイン アクティビティから起動されたアクティビティから戻った後、制御フローがメイン アクティビティOnClick()のメソッドに到達しないことがわかりました。

これが「一時停止」または「再開」状態に関係しているのではないかと疑っています。

つまり、メイン アクティビティは A であり、A から起動されたアクティビティは B です。したがって、A から起動して B で作業します。(ハードウェア ボタン「戻る」を使用して)A に戻ると、onClick関数は呼び出されないようです。

プライバシー上の理由から、コンパイルするとエラーになる以下のコードをいくつか削除しましたが、実際のコードではアクティビティ B と listviews i call run fine を呼び出します。

助けてください!:)

私のコード:

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 に答える