无法导入ActivityChooserModel

时间:2015-05-27 00:07:04

标签: android android-studio gradle android-gradle shareactionprovider

由于某些原因,我无法访问Android活动中的ActivityChooserModel课程。我试图按如下方式访问它:

ActivityChooserModel dataModel = ActivityChooserModel.get(this, ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);

但是当我尝试构建项目时,我得到以下内容:

cannot find symbol class ActivityChooserModel

我尝试过使用以下两种导入功能,但它们都不起作用:

import android.widget.ActivityChooserModel;
import android.support.v7.internal.widget.ActivityChooserModel;

这尤其令人沮丧,因为在Android Studio中我可以打开ActivityChooserModel.java,我可以看到它是一个公共类。我的活动是使用ShareActionProvider并导入它没有任何问题,当我浏览SDK源时,我可以清楚地查看该类和ActivityChooserModel所以我不知道为什么我不是能够访问它。

以下是我build.gradle的摘录,但我不确定是否相关:

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 22
    }
}

非常感谢!

2 个答案:

答案 0 :(得分:1)

这为我编译:

import android.support.v7.internal.widget.ActivityChooserModel;
import android.support.v7.widget.ShareActionProvider;


public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActivityChooserModel dataModel = ActivityChooserModel.get(this, ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);

    }

的build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile "com.android.support:appcompat-v7:22.1.1"

}

答案 1 :(得分:0)

接受的答案对我有用,但我必须在我的项目中加入appcompat-v7才能这样做,这是一个非常大的图书馆。虽然非常讨厌,但我发现了另一种用反射做法的方法:

Class<?> activityChooserModel = Class.forName("android.widget.ActivityChooserModel");
Method activityChooserGetMethod = activityChooserModel.getMethod("get", Context.class, String.class);
Object activityChooserObject = activityChooserGetMethod.invoke(null, this, ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);

如果您不介意包括appcompat-v7,那么接受的答案可能会更好但我只是想添加这个答案