繁体   English   中英

OnClickListener不能按预期运行

[英]OnClickListener not functioning as expected

我在这行有一个onclicklistener:

mAssistUpdateButton = (Button) findViewById(R.id.assist_instr_btn);
        mAssistUpdateButton.setOnClickListener(this);

应该调用:

public void onClick(View v) {
    if (v == mAssistUpdateButton) {

但似乎没有达到代码中的要求。 我已经看了好几次了,似乎无法弄清楚我做错了什么。

任何输入,不胜感激。

资源:

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.SAXException;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.net.Uri;
import android.os.Build;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ConfigFinalActivity extends Activity implements OnClickListener {
    private static final String TAG = "ConfigActivity";
    TelephonyManager tm;
    AlertDialog mErrorAlert = null;
    private Notification mNotification = null;
    private Button mXButton = null;
    private Button mAssistUpdateButton = null;
    private Button mAssistInstrButton = null;
    private Button mReadAgainButton = null;
    private int mInstructionNumber = 0;
    public static ArrayList<String> NameArr = new ArrayList<String>();
    public static ArrayList<String> ValueArr = new ArrayList<String>();
    public static ArrayList<String> nameArr = new ArrayList<String>();
    public static ArrayList<String> ApnArr = new ArrayList<String>();
    public static ArrayList<String> mmscArr = new ArrayList<String>();
    public static ArrayList<String> mmsportArr = new ArrayList<String>();
    public static ArrayList<String> mmsproxyArr = new ArrayList<String>();
    public static ArrayList<String> portArr = new ArrayList<String>();
    public static ArrayList<String> proxyArr = new ArrayList<String>();
    public static int count;
    public static int TotalSteps = 8;
    int i, g = 0, result = 0;
    String Result = "";
    public static ContentValues Values = new ContentValues();
    XmlParserHandlerFinal handler;

    public static final Uri APN_TABLE_URI = Uri
            .parse("content://telephony/carriers");
    public static String Base_URL = "https://www.mysettings.com/";
    public static InputStream stream = null;
    UpdateActivity update;
    public static String status;

    /** Called when the activity is first created. */
    @SuppressLint("NewApi")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int version = android.os.Build.VERSION.SDK_INT;
        tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        update = new UpdateActivity();
        nameArr = update.getnameArr();
        ApnArr = update.getApnArr();
        mmscArr = update.getMMSCArr();
        mmsproxyArr = update.getMmscProxyArr();
        mmsportArr = update.getMmsPortArr();
        proxyArr = update.getMmscProxyArr();
        portArr = update.getMmsPortArr();
        count = update.getCount();
        if (ApnArr.isEmpty() || mmscArr.isEmpty() || mmsportArr.isEmpty()
                || mmsproxyArr.isEmpty() || proxyArr.isEmpty()
                || portArr.isEmpty()) {
            tryagain();
        } else if (version < VERSION_CODES.ICE_CREAM_SANDWICH) {

            // Update APN table
            try {
                result = updateTable();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }// Settings updated with this atomic call
            catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            if (result != -1) {
                status = "success";

            } else {
                status = "failure";
            }

            if (status.equals("success")) {
                completeUpdate();
            } else if (status.equals("failure")) {
                tryagain();
                // showAlert(getString(R.string.unchanged_net10_dialog));
            }

        } else {// ICS and later versions

            // Reduce number of steps to 6
            TotalSteps = 6;
            setContentView(R.layout.assist_instructions);
    //      String assistUpdate = getString(R.string.instructions_1);
    //      CharSequence styledText = Html.fromHtml(assistUpdate);
            TextView assistText = (TextView) findViewById(R.id.apn_app_text_cta2);
    //      assistText.setText(styledText);
            mAssistUpdateButton = (Button) findViewById(R.id.assist_instr_btn);
            mAssistUpdateButton.setOnClickListener(this);

        }
    }

    public void onClick(View v) {
        if (v == mAssistUpdateButton) {

            // Update button for ICS and up is selected
            // Get the TextView in the Assist Update UI

            TextView tv = (TextView) findViewById(R.id.apn_app_text_cta2);
            String text = "";
            CharSequence styledText = text;
            switch (mInstructionNumber) {

            case 0:

                // Retrieve the instruction string resource corresponding the
                // 2nd set of instructions
        //      text = String.format(getString(R.string.instructions_3),
    //                  TotalSteps);
//      styledText = Html.fromHtml(text);
                // Update the TextView with the correct set of instructions
                //tv.setText(styledText);
                // Increment instruction number so the correct instructions
                // string resource can be retrieve the next time the update
                // button is pressed
                mInstructionNumber++;
                break;

            case 1:
                // First set of instructions for step by step process to update
                // the APN Settings to the corresponding layout
                //setContentView(R.layout.screen5);
////                String one_text = String.format(getString(R.string.one),
////                        TotalSteps);
////                CharSequence styledText_one = Html.fromHtml(one_text);
//              TextView one = (TextView) findViewById(R.id.text_one);
//              one.setTextSize(18);
//              one.setText(styledText_one);
//              String two_text = String.format(getString(R.string.two),
//                      TotalSteps);
//              CharSequence styledText_two = Html.fromHtml(two_text);
//              TextView two = (TextView) findViewById(R.id.text_two);
//              two.setTextSize(18);
//              two.setText(styledText_two);
//              String three_text = String.format(getString(R.string.three),
//                      TotalSteps);
//              CharSequence styledText_three = Html.fromHtml(three_text);
//              TextView three = (TextView) findViewById(R.id.text_three);
        //      three.setTextSize(18);
            //  three.setText(styledText_three);
                mAssistUpdateButton = (Button) findViewById(R.id.assist_instr_btn);
                mAssistUpdateButton.setOnClickListener(this);
                mInstructionNumber++;
                break;

            case 2:
                // second set of instructions for step by step process to update
                // the APN Settings to the corresponding layout
            //  setContentView(R.layout.screen6);
            //  String four_text = String.format(getString(R.string.four),
        //              TotalSteps);
        //      styledText = Html.fromHtml(four_text);
        //      TextView four = (TextView) findViewById(R.id.text_four);
        //      four.setTextSize(18);
        //      four.setText(styledText);
        //      String five_text = String.format(getString(R.string.five),
            //          TotalSteps);
            //  styledText = Html.fromHtml(five_text);
            //  TextView five = (TextView) findViewById(R.id.text_five);
            //  five.setTextSize(18);
            //  five.setText(styledText);
        //      String six_text = String.format(getString(R.string.six),
//                      TotalSteps);
//              styledText = Html.fromHtml(six_text);
//              TextView six = (TextView) findViewById(R.id.text_six);
//              six.setTextSize(18);
//              six.setText(styledText);
//          //  String seven_text = String.format(getString(R.string.seven),
                //      TotalSteps);
            //  styledText = Html.fromHtml(seven_text);
            //  TextView seven = (TextView) findViewById(R.id.text_seven);
        //      seven.setTextSize(18);
        //      seven.setText(styledText);
            //  String eight_text = String.format(getString(R.string.eight),
                //      TotalSteps);
            //  styledText = Html.fromHtml(eight_text);
            //  TextView eight = (TextView) findViewById(R.id.text_eight);
        //      eight.setTextSize(18);
        //      eight.setText(styledText);

                // just for testing
                Result = "success";
                mAssistUpdateButton = (Button) findViewById(R.id.assist_instr_btn);
                if (Result.equalsIgnoreCase("success")) {
                    mAssistUpdateButton.setOnClickListener(this);
                } else if (Result.equalsIgnoreCase("failure")) {
                    // // Displaying final layout after failure of Post-ICS
                    // settings
                    // read the result in the response ..if success go ahead
                    // else load the tryagain screen

        //          setContentView(R.layout.tryagain);
        //          setContentView(R.layout.tryagain);
                    String tryAgainText = "";
                    CharSequence styledTryAgainText;

//                  tryAgainText = String.format(
//                          getString(R.string.tryagain_text1), TotalSteps);
//                  styledTryAgainText = Html.fromHtml(tryAgainText);
//                  TextView tryAgain1 = (TextView) findViewById(R.id.tryagain_text1);
//                  tryAgain1.setText(styledTryAgainText);

//                  tryAgainText = String.format(
//                          getString(R.string.tryagain_text2), TotalSteps);
//                  styledTryAgainText = Html.fromHtml(tryAgainText);
//                  TextView tryAgain2 = (TextView) findViewById(R.id.tryagain_text2);
//                  tryAgain2.setText(styledTryAgainText);
//
//                  tryAgainText = String.format(
//                          getString(R.string.tryagain_text3), TotalSteps);
//                  styledTryAgainText = Html.fromHtml(tryAgainText);
//                  TextView tryAgain3 = (TextView) findViewById(R.id.tryagain_text3);
//                  tryAgain3.setText(styledTryAgainText);

                }

                mInstructionNumber++;
                break;
            case 3:
                // final set of instructions

            //  setContentView(R.layout.assist_instructions_update);
            //  String last_instr_text = String.format(
        //              getString(R.string.instructions_5), TotalSteps);
            //  styledText = Html.fromHtml(last_instr_text);
            //  TextView last_text = (TextView) findViewById(R.id.apn_app_text_cta3);
            //  last_text.setText(styledText);

//      //      String last_instr_text1 = String.format(
//                      getString(R.string.thatsit), TotalSteps);
//              styledText = Html.fromHtml(last_instr_text1);
//              TextView last_text1 = (TextView) findViewById(R.id.thatsIt);
//              last_text1.setText(styledText);

                String mreadAgaintext = String
                        .format(getString(R.string.read_again_text));
                styledText = Html.fromHtml(mreadAgaintext);

                mAssistInstrButton = (Button) findViewById(R.id.assist_instr_btn);
            //ReadAgainButton = (Button) findViewById(R.id.read_again_btn);

            //ReadAgainButton.setText(styledText);
                mAssistInstrButton.setOnClickListener(this);
        //mReadAgainButton.setOnClickListener(this);
            }
        } else if (v == mAssistInstrButton) {
            // "LET'S DO THIS" Button in final instructions screen for ICS and
            // up is selected
            Values = getValues();
            startActivity(new Intent(Settings.ACTION_APN_SETTINGS));
            try {
                showNotification();
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finish();

您不能像这样比较视图对象。 通常,您可以像这样比较按钮ID:

public void onClick(View v) {
    switch(v.getId()) {
    case R.id.assist_instr_btn:
    case R.id.button2:
    }
}

编辑:我也建议您阅读Java中测试对象相等性的知识。 对于基本类型,使用==很好,但对于对象而言通常不行。

您是否使用了正确的导入? 它应该是

import android.view.View.OnclickListener

就像trevor-e所说,最好比较ID

public void onClick(View v) {    
    switch(v.getId()) {   
      case R.id.btn_1:   
      ...    
      break;   
    case R.id.btn_2:   
      ...   
      break;   
    }   
}

如果要比较对象(在您的情况下为视图,则应使用“ .equals”。您的方法将如下所示:

public void onClick(View v) {    
    if(v.equals(mAssistsUpdateButton )) {   
      //your code
    }else if (v.equals(mButton2 )) {   
      //your code
    }
}

以上是正确的,但我认为比较ID更快

希望这对干杯有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM