[英]While upgrading gradle plugins getting java.lang.NoSuchMethodError
我將android gradle插件升級到
classpath'com.android.tools.build:gradle:2.2.0-beta2'
我在HomeScreenActivity上遇到錯誤,例如
Java.lang.NoSuchMethodError: No static method setOnApplyWindowInsetsListener(Landroid/view/View;Landroid/support/v4/view/OnApplyWindowInsetsListener;)V in class Landroid/support/v4/view/ViewCompatLollipop; or its super classes (declaration of 'android.support.v4.view.ViewCompatLollipop' appears in /data/data/test.bpl.com.bploximeterdemo/files/instant-run/dex/slice-internal_impl-24.2.0_adc91965034c97937e0e3e7bf26df26d4116a5ab-classes.dex)
at android.support.v4.view.ViewCompat$LollipopViewCompatImpl.setOnApplyWindowInsetsListener(ViewCompat.java:1537)
at android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener(ViewCompat.java:2787)
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:389)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253)
at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:76)
at android.support.v7.app.AlertController.installContent(AlertController.java:213)
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240)
at android.app.Dialog.dispatchOnCreate(Dialog.java:394)
at android.app.Dialog.show(Dialog.java:295)
at wl.bpl.com.bploximeter.HomeScreenActivity.show_dialog(HomeScreenActivity.java:1252)
at wl.bpl.com.bploximeter.HomeScreenActivity.onCreate(HomeScreenActivity.java:235)
at android.app.Activity.performCreate(Activity.java:6259)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
HomeScreenActivity代碼為
public class HomeScreenActivity extends AppCompatActivity {
AlertDialog alert;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
overridePendingTransition(R.anim.trans_left_in, R.anim.trans_left_out);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
}
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_COARSE_LOCATION)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
PERMISSION_REQUEST_COARSE_LOCATION);
}
}
}
myBleRecever = new BleBroadCastReceiver();
registerReceiver(myBleRecever, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
if(device_macid=="")
{
show_dialog();
}
}
private void show_dialog()
{
AlertDialog.Builder builder = new AlertDialog.Builder(HomeScreenActivity.this);
builder.setMessage(R.string.connect_device)
.setPositiveButton("Connect", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(HomeScreenActivity.this, BLEdevicelistActivity.class);
if (isBleseviceRegister) {
unregisterReceiver(mGattUpdateReceiver);
isBleseviceRegister = false;
}
if (isBindServise) {
unbindService(mServiceConnection);
isBindServise = false;
}
alert.dismiss();
startActivityForResult(intent, Constants.BLUETOOTH_REQUEST_CODE);
}
});
alert = builder.create();
// alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
Logger.log(Level.DEBUG,TAG,"Alert dialog box gets called");
alert.show();// **getting error here**
}
請注意,此代碼工作較早
升級Android Studio時,我遇到了類似的問題。
將成績文件上的每個支持庫“ com.android.support:xxx:...”更新為24.2.0。
檢查是否有幫助。
編輯:
粘貼我的gradle文件
依賴項{編譯fileTree(include:['* .jar'],dir:'libs')testCompile'junit:junit:4.12'編譯'com.android.support:appcompat-v7:24.2.0'編譯'com.android .support:cardview-v7:24.2.0'編譯'com.android.support:design:24.2.0'編譯'com.google.android.gms:play-services:9.4.0'編譯'com.github.bumptech .glide:glide:3.7.0'編譯'com.google.android.gms:play-services-auth:9.4.0'編譯項目(':components')}
希望這將足夠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.