【问题标题】:fix Could not find android-support-v7-appcompat.apk修复找不到android-support-v7-appcompat.apk
【发布时间】:2015-08-19 08:43:59
【问题描述】:

我在 Eclipse 中为 android 项目使用 [android-support-v7-appcompat]。我收到此错误“android-support-v7-appcompat] 找不到 android-support-v7-appcompat.apk!”。请分享您对此过程的经验

公共类 SmsActivity 扩展 AppCompatActivity 实现 View.OnClickListener {

private static String TAG = SmsActivity.class.getSimpleName();
private ViewPager viewPager;
private ViewPagerAdapter adapter;
private Button btnRequestSms, btnVerifyOtp;
private EditText inputName, inputEmail, inputMobile, inputOtp;
private ProgressBar progressBar;
private PrefManager pref;
private ImageButton btnEditMobile;
private TextView txtEditMobile;
private LinearLayout layoutEditMobile;

    // Checking for user session
    // if user is already logged in, take him to main activity
    if (pref.isLoggedIn()) {
        Intent intent = new Intent(SmsActivity.this, Home.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK            Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);

        finish();
    }

    adapter = new ViewPagerAdapter();
    viewPager.setAdapter(adapter);
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });


    /**
     * Checking if the device is waiting for sms
     * showing the user OTP screen
     */
    if (pref.isWaitingForSms()) {
        viewPager.setCurrentItem(1);
        layoutEditMobile.setVisibility(View.VISIBLE);
    }
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_request_sms:
            validateForm();
            break;

        case R.id.btn_verify_otp:
            verifyOtp();
            break;

        case R.id.btn_edit_mobile:
            viewPager.setCurrentItem(0);
            layoutEditMobile.setVisibility(View.GONE);
            pref.setIsWaitingForSms(false);
            break;
    }
}

/**
 * Validating user details form
 */
private void validateForm() {
    String name = inputName.getText().toString().trim();
    String email = inputEmail.getText().toString().trim();
    String mobile = inputMobile.getText().toString().trim();

    // validating empty name and email
    if (name.length() == 0 || email.length() == 0) {
        Toast.makeText(getApplicationContext(), "Please enter your details", Toast.LENGTH_SHORT).show();
        return;
    }

    // validating mobile number
    // it should be of 10 digits length
    if (isValidPhoneNumber(mobile)) {

        // request for sms
        progressBar.setVisibility(View.VISIBLE);

        // saving the mobile number in shared preferences
        pref.setMobileNumber(mobile);

        // requesting for sms
        requestForSMS(name, email, mobile);

    } else {
        Toast.makeText(getApplicationContext(), "Please enter valid mobile number", Toast.LENGTH_SHORT).show();
    }
}

/**
 * Method initiates the SMS request on the server
 *
 * @param name   user name
 * @param email  user email address
 * @param mobile user valid mobile number
 */
private void requestForSMS(final String name, final String email, final String mobile) {

    StringRequest strReq = new StringRequest(Request.Method.POST,
            Config.URL_REQUEST_SMS, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, response.toString());

            try {
                JSONObject responseObj = new JSONObject(response);

                // Parsing json object response
                // response will be a json object
                boolean error = responseObj.getBoolean("error");
                String message = responseObj.getString("message");

                // checking for error, if not error SMS is initiated
                // device should receive it shortly
                if (!error) {
                    // boolean flag saying device is waiting for sms
                    pref.setIsWaitingForSms(true);

                    // moving the screen to next pager item i.e otp screen
                    viewPager.setCurrentItem(1);
                    txtEditMobile.setText(pref.getMobileNumber());
                    layoutEditMobile.setVisibility(View.VISIBLE);

                    Toast.makeText(getApplicationContext(), "msg", Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(getApplicationContext(),
                            "Error: " + message,
                            Toast.LENGTH_LONG).show();
                }

                // hiding the progress bar
                progressBar.setVisibility(View.GONE);

            } catch (JSONException e) {
                Toast.makeText(getApplicationContext(),
                        "Error: " + e.getMessage(),
                        Toast.LENGTH_LONG).show();

                progressBar.setVisibility(View.GONE);
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),"msg1", Toast.LENGTH_SHORT).show();
                  //  error. getMessage(), Toast.LENGTH_SHORT).show();
            progressBar.setVisibility(View.GONE);
        }
    }) {

        /**
         * Passing user parameters to our server
         * @return
         */
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("name", name);
            params.put("email", email);
            params.put("mobile", mobile);

            Log.e(TAG, "Posting params: " + params.toString());

            return params;
        }

    };

    int socketTimeout = 60000;
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
    strReq.setRetryPolicy(policy);

    // Adding request to request queue
    MyApplication.getInstance().addToRequestQueue(strReq);
}

/**
 * sending the OTP to server and activating the user
 */
private void verifyOtp() {
    String otp = inputOtp.getText().toString().trim();

    if (!otp.isEmpty()) {
        Intent grapprIntent = new Intent(getApplicationContext(), HttpService.class);
        grapprIntent.putExtra("otp", otp);
        startService(grapprIntent);
    } else {
        Toast.makeText(getApplicationContext(), "Please enter the OTP", Toast.LENGTH_SHORT).show();
    }
}

/**
 * Regex to validate the mobile number
 * mobile number should be of 10 digits length
 *
 * @param mobile
 * @return
 */
private static boolean isValidPhoneNumber(String mobile) {
    String regEx = "^[0-9]{10}$";
    return mobile.matches(regEx);
}


class ViewPagerAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((View) object);
    }

    public Object instantiateItem(View collection, int position) {

        int resId = 0;
        switch (position) {
            case 0:
                resId = R.id.layout_sms;
                break;
            case 1:
                resId = R.id.layout_otp;
                break;
        }
        return findViewById(resId);
    }
}

}

【问题讨论】:

  • 您使用哪个 jdk 版本?它需要 jdk 8
  • 我正在使用 jdk 1.7(即 7 版本)
  • 更新到 1.8 并更新 sdk
  • sdk 已完全更新至 API 23,但我们正在为 API 14- API 19 的版本构建应用程序...
  • appcompact 的目标版本是什么??

标签: android eclipse


【解决方案1】:

试试:

  1. 右键单击包资源管理器导入
  2. Android > 现有 Android 代码到工作区 > 下一步
  3. 浏览 > ~/sdk/extras/android/support/v7/appcompat
  4. 选择包。复选框“将项目复制到工作区”> 完成
  5. 在您的项目中右键单击 > 属性 > Android
  6. 在库部分 > 添加 > appcompat > 确定
  7. 最后进入 Project(在 eclipse 菜单中)> Clean ..

告诉我们您是否尝试过什么以及发生了什么。

注意appcompat 目标版本和您的项目目标版本应该相同

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 2015-01-29
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多