- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 Linux 机器 Ubuntu 15.04 上运行 Android Studio。我在编译过程中遇到了这个问题。错误是由于在使用此指针时使用了 mContext 对象。gradle 编译消息是:
Information:Gradle tasks [:app:assembleDebug,:app:assembleDebugAndroidTest]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:preDexDebug UP-TO-DATE
:app:dexDebug
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
:app:validateDebugSigning
:app:packageDebug
:app:zipalignDebug
:app:assembleDebug
:app:preDebugAndroidTestBuild UP-TO-DATE
:app:prepareDebugAndroidTestDependencies
:app:compileDebugAndroidTestAidl UP-TO-DATE
:app:processDebugAndroidTestManifest UP-TO-DATE
:app:compileDebugAndroidTestRenderscript UP-TO-DATE
:app:generateDebugAndroidTestBuildConfig UP-TO-DATE
:app:generateDebugAndroidTestAssets UP-TO-DATE
:app:mergeDebugAndroidTestAssets UP-TO-DATE
:app:generateDebugAndroidTestResValues UP-TO-DATE
:app:generateDebugAndroidTestResources UP-TO-DATE
:app:mergeDebugAndroidTestResources UP-TO-DATE
:app:processDebugAndroidTestResources UP-TO-DATE
:app:generateDebugAndroidTestSources UP-TO-DATE
:app:processDebugAndroidTestJavaRes UP-TO-DATE
:app:compileDebugAndroidTestJavaWithJavac
/home/devkrishna/AndroidStudioProjects/Sunshine/app/src/androidTest/java/com/example/android/sunshine/app/test/TestDb.java
Error:(19, 29) error: constructor WeatherDbHelper in class WeatherDbHelper cannot be applied to given types;
required: Context,String,CursorFactory,int
found: Context
reason: actual and formal argument lists differ in length
Error:(35, 36) error: constructor WeatherDbHelper in class WeatherDbHelper cannot be applied to given types;
required: Context,String,CursorFactory,int
found: Context
reason: actual and formal argument lists differ in length
Error:Execution failed for task ':app:compileDebugAndroidTestJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 33.089 secs
Information:3 errors
Information:0 warnings
Information:See complete output in console
这是文件 TestDb.java 的代码。它在内部产生错误在行中扩展 androidTestCase 的 TestCreateDb() 方法:
SQLiteDatabase db = new WeatherDbHelper(this.mContext).getWritableDatabase();
所以,请看完这句话。
package com.example.android.sunshine.app.test;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import android.util.Log;
import com.example.android.sunshine.app.data.WeatherContract.LocationEntry;
import com.example.android.sunshine.app.data.WeatherContract.WeatherEntry;
import com.example.android.sunshine.app.data.WeatherDbHelper;
public class TestDb extends AndroidTestCase {
public static final String LOG_TAG = TestDb.class.getSimpleName();
public void testCreateDb() throws Throwable {
mContext.deleteDatabase(WeatherDbHelper.DATABASE_NAME);
SQLiteDatabase db = new WeatherDbHelper(
this.mContext).getWritableDatabase();
assertEquals(true, db.isOpen());
db.close();
}
public void testInsertReadDb() {
// Test data we're going to insert into the DB to see if it works.
String testLocationSetting = "99705";
String testCityName = "North Pole";
double testLatitude = 64.7488;
double testLongitude = -147.353;
// If there's an error in those massive SQL table creation Strings,
// errors will be thrown here when you try to get a writable database.
WeatherDbHelper dbHelper = new WeatherDbHelper(mContext);
SQLiteDatabase db = dbHelper.getWritableDatabase();
// Create a new map of values, where column names are the keys
ContentValues values = new ContentValues();
values.put(LocationEntry.COLUMN_LOCATION_SETTING, testLocationSetting);
values.put(LocationEntry.COLUMN_CITY_NAME, testCityName);
values.put(LocationEntry.COLUMN_COORD_LAT, testLatitude);
values.put(LocationEntry.COLUMN_COORD_LONG, testLongitude);
long locationRowId;
locationRowId = db.insert(LocationEntry.TABLE_NAME, null, values);
// Verify we got a row back.
assertTrue(locationRowId != -1);
Log.d(LOG_TAG, "New row id: " + locationRowId);
// Data's inserted. IN THEORY. Now pull some out to stare at it and verify it made
// the round trip.
// Specify which columns you want.
String[] columns = {
LocationEntry._ID,
LocationEntry.COLUMN_LOCATION_SETTING,
LocationEntry.COLUMN_CITY_NAME,
LocationEntry.COLUMN_COORD_LAT,
LocationEntry.COLUMN_COORD_LONG
};
// A cursor is your primary interface to the query results.
Cursor cursor = db.query(
LocationEntry.TABLE_NAME, // Table to Query
columns,
null, // Columns for the "where" clause
null, // Values for the "where" clause
null, // columns to group by
null, // columns to filter by row groups
null // sort order
);
// If possible, move to the first row of the query results.
if (cursor.moveToFirst()) {
// Get the value in each column by finding the appropriate column index.
int locationIndex = cursor.getColumnIndex(LocationEntry.COLUMN_LOCATION_SETTING);
String location = cursor.getString(locationIndex);
int nameIndex = cursor.getColumnIndex((LocationEntry.COLUMN_CITY_NAME));
String name = cursor.getString(nameIndex);
int latIndex = cursor.getColumnIndex((LocationEntry.COLUMN_COORD_LAT));
double latitude = cursor.getDouble(latIndex);
int longIndex = cursor.getColumnIndex((LocationEntry.COLUMN_COORD_LONG));
double longitude = cursor.getDouble(longIndex);
// Hooray, data was returned! Assert that it's the right data, and that the database
// creation code is working as intended.
// Then take a break. We both know that wasn't easy.
assertEquals(testCityName, name);
assertEquals(testLocationSetting, location);
assertEquals(testLatitude, latitude);
assertEquals(testLongitude, longitude);
// Fantastic. Now that we have a location, add some weather!
} else {
// That's weird, it works on MY machine...
fail("No values returned :(");
}
// Fantastic. Now that we have a location, add some weather!
ContentValues weatherValues = new ContentValues();
weatherValues.put(WeatherEntry.COLUMN_LOC_KEY, locationRowId);
weatherValues.put(WeatherEntry.COLUMN_DATETEXT, "20141205");
weatherValues.put(WeatherEntry.COLUMN_DEGREES, 1.1);
weatherValues.put(WeatherEntry.COLUMN_HUMIDITY, 1.2);
weatherValues.put(WeatherEntry.COLUMN_PRESSURE, 1.3);
weatherValues.put(WeatherEntry.COLUMN_MAX_TEMP, 75);
weatherValues.put(WeatherEntry.COLUMN_MIN_TEMP, 65);
weatherValues.put(WeatherEntry.COLUMN_SHORT_DESC, "Asteroids");
weatherValues.put(WeatherEntry.COLUMN_WIND_SPEED, 5.5);
weatherValues.put(WeatherEntry.COLUMN_WEATHER_ID, 321);
dbHelper.close();
}
weatherDbhelper.java 的源代码是:
package com.example.android.sunshine.app.data;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.example.android.sunshine.app.data.WeatherContract.LocationEntry;
import com.example.android.sunshine.app.data.WeatherContract.WeatherEntry;
/**
* Created by devkrishna on 9/3/15.
*/
public class WeatherDbHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION=1;
public static final String DATABASE_NAME="weather.db";
public WeatherDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
final String SQL_CREATE_WEATHER_TABLE=
"CREATE TABLE" + WeatherEntry.TABLE_NAME + " (" +
WeatherEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
WeatherEntry.COLUMN_LOC_KEY + " INTEGER NOT NULL, " +
WeatherEntry.COLUMN_DATETEXT + " TEXT NOT NULL, " +
WeatherEntry.COLUMN_SHORT_DESC + " TEXT NOT NULL, " +
WeatherEntry.COLUMN_WEATHER_ID + "INTEGER NOT NULL, " +
WeatherEntry.COLUMN_MIN_TEMP + " REAL NOT NULL, " +
WeatherEntry.COLUMN_MAX_TEMP + " REAL NOT NULL, " +
WeatherEntry.COLUMN_HUMIDITY + " REAL NOT NULL, " +
WeatherEntry.COLUMN_PRESSURE + " REAL NOT NULL, " +
WeatherEntry.COLUMN_WIND_SPEED + " REAL NOT NULL, " +
WeatherEntry.COLUMN_DEGREES + " REAL NOT NULL, " +
"FOREIGN KEY (" +WeatherEntry.COLUMN_LOC_KEY + ") REFERENCES " +
LocationEntry.TABLE_NAME + " (" + LocationEntry._ID + "), " +
"UNIQUE (" + WeatherEntry.COLUMN_DATETEXT + ", " +
WeatherEntry.COLUMN_LOC_KEY + ") ON CONFLICT REPLACE);";
final String SQL_CREATE_LOCATION_TABLE=
"CREATE TABLE" + LocationEntry.TABLE_NAME + " (" +
LocationEntry._ID + " INTEGER PRIMARY KEY," +
LocationEntry.COLUMN_LOCATION_SETTING + "TEXT UNIQUE NOT NULL, " +
LocationEntry.COLUMN_CITY_NAME + "TEXT NOT NULL, " +
LocationEntry.COLUMN_COORD_LAT + "REAL NOT NULL, " +
LocationEntry.COLUMN_COORD_LONG + "REAL NOT NULL, " +
"UNIQUE (" +LocationEntry.COLUMN_LOCATION_SETTING + ") ON CONFLICT IGNORE"+
" );";
sqLiteDatabase.execSQL(SQL_CREATE_LOCATION_TABLE);
sqLiteDatabase.execSQL(SQL_CREATE_WEATHER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXIXTS " + LocationEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + WeatherEntry.TABLE_NAME);
onCreate(sqLiteDatabase);
}
最佳答案
试试这个
public class TestDb extends AndroidTestCase {
Context mContext;
public void TestDb (Context mContext){
this.mContext = mContext;
}
public static final String LOG_TAG = TestDb.class.getSimpleName();
public void testCreateDb() throws Throwable {
mContext.deleteDatabase(WeatherDbHelper.DATABASE_NAME);
SQLiteDatabase db = new WeatherDbHelper(
this.mContext).getWritableDatabase();
assertEquals(true, db.isOpen());
db.close();
}
关于java - 由于 mContext 对象,Android 中的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414872/
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!