由于某些原因,我无法访问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
}
}
非常感谢!
答案 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
,那么接受的答案可能会更好但我只是想添加这个答案