嗨,我正在使用实现接口的Fragments.
public class SigninFragment extends Fragment implements SigninInterface
Run Code Online (Sandbox Code Playgroud)
片段类中接口的方法实现如下.
@Override
public void afterSubmitClicked(String userId, Bundle bundle) {
Log.d(TAG,"Calling time afterSubmitClicked called"+bundle);
if(!userId.equals("-1")){
//Logged in successfully
//Move to MusicHome
Intent mIntent = new Intent(getActivity(),MusicHome.class);
mIntent.putExtra("SigninFragment.user_details", bundle);
startActivity(mIntent);
}else{
//Logging in failed
//show error dialog
}
}
Run Code Online (Sandbox Code Playgroud)
在执行AsynchronousTask(扩展AsyncTask)类之后调用此方法.
但是我崩溃了.并显示错误消息
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
logcat的
02-14 16:37:04.648: E/AndroidRuntime(28177): Process: com.raaga.android, PID: 28177
02-14 16:37:04.648: E/AndroidRuntime(28177): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on …Run Code Online (Sandbox Code Playgroud) 我正在我的 android 应用程序中处理 pdf 文件。在警报对话框中按“是”应该会在默认文件管理器应用程序中打开 pdf 文件位置。
我试过这个,但它总是打开一个选择器。即使它(ES文件资源管理器)打开“选择路径”对话框而不是应用程序中的文件夹作为访问文件夹的正常方式。
那么,是否可以在“默认文件管理器”中直接打开文件夹的内容?或者可以使用选择器打开,在选择 pdf 文件时,它应该从所选的应用程序中显示 pdf 文件选择器?。
以下是我为实现这一目标所做的尝试。
public void openFolder(String filePath)
{
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(filePath.substring(0, filePath.lastIndexOf("/")));
intent.setDataAndType(uri, "*/*");//tried with application/pdf and file/*
intent.addCategory(Intent.CATEGORY_OPENABLE);
PackageManager pm = context.getPackageManager();
List<ResolveInfo> apps =
pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (apps.size() > 0)
startActivity(intent);//Intent.createChooser(intent, "Open folder"
}
Run Code Online (Sandbox Code Playgroud)
编辑 我也试过 ACTION_PICK 。它定向到默认文件管理器的特定文件夹。但是从那里选择文件不会打开选择器(pdf 查看器列表对话框)。
我正在为我的项目使用Google App Indexing.
Newbee为此功能.我只是按照谷歌指南行.
在此页面中,要求创建GoogleApiClient的实例.我试过但是得到"GoogleApiClient无法解析类型"错误.
我已将以下库添加到我的项目中.
1.Google播放服务2.Google api客户端3.Google http api客户端

和

错误是

我该如何解决这个错误?
我正在/尝试使用 WorkManager 和 MVVM 下载具有暂停和恢复功能的文件。
在这里,我正在使用 WorkManager 寻求暂停/恢复和下载百分比进度更新。所以我在这里分享我的课程。
MainActivity.kt
class MainActivity : AppCompatActivity() {
lateinit var downloadViewModel : DownloaderViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main)
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this,R.layout.activity_main)
downloadViewModel = ViewModelProviders.of(this).get(DownloaderViewModel::class.java)
binding.viewmodel = downloadViewModel
download_button.setOnClickListener({
startDownload()
})
cancel_button.setOnClickListener({
downloadViewModel.cancelDownloadWork(Constants.TAG_OUTPUT)
WorkUtils.deleteFile(WorkUtils.getIsbn(Constants.TAG_OUTPUT))
})
downloadViewModel.mSavedWorkStatus.observe(this, Observer {
it?.let {
}
if(it?.size!! > 0){
val workStatus = it.first()
val workState = workStatus?.state
downloadViewModel.updateDownloadWorkState(workState.toString())
WorkUtils.makeStatusNotification(workState.toString(),this.applicationContext)
}
})
pause_button.setOnClickListener({
downloadViewModel.cancelDownloadWork(Constants.TAG_OUTPUT)
val pausedAt = WorkUtils.getFileSize(WorkUtils.getIsbn(DOWNLOAD_URL))
Log.d("paused at","paused at $pausedAt")
})
resume_button.setOnClickListener({
val resumeFrom = WorkUtils.getFileSize(WorkUtils.getIsbn(DOWNLOAD_URL)) …Run Code Online (Sandbox Code Playgroud) 我目前正在使用我的应用中的Google Plus登录功能.
我创建了GoogleApiClient构建器,如下所示
Plus.PlusOptions options = new Plus.PlusOptions.Builder()
.addActivityTypes("http://schemas.google.com/AddActivity")
.build();
myGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
// .addApi(Plus.API, Plus.PlusOptions.builder().build())
.addApi(Plus.API, options)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.addScope(Plus.SCOPE_PLUS_PROFILE).build();
Run Code Online (Sandbox Code Playgroud)
和onConnected方法
@Override
public void onConnected(Bundle arg0) {
// TODO Auto-generated method stub
plusUtilities.ShowToast("Login successful");
updateGPbutton();
// hide progress DiaLog
plusUtilities.DissmissPD();
// it has deprecated
// plusUtilities.ShowToast("Login to Google+ with " +
// mPlusClient.getAccountName().toString());
// upgraded class
plusUtilities.ShowToast("Login to Google+ with "
+ Plus.AccountApi.getAccountName(myGoogleApiClient).toString());
// deprecated
// mPlusClient.loadPeople(this, "me");
Plus.PeopleApi.load(myGoogleApiClient, "me");
// plusUtilities.ShowPD("Fetching user data... ");
// upgraded …Run Code Online (Sandbox Code Playgroud) 嗨,我在一个项目中使用 Kotlin 协程库。
下面的方法调用一个挂起函数,它返回一个布尔值。
fun isNetworkAvailable(context: Context?): Boolean {
//return checkNetworkReachability(context)
var isNetworkAvailable = false
GlobalScope.launch(Dispatchers.Default) {
isNetworkAvailable = GlobalScope.async<Boolean> {
checkNetwork()
}.await()
}
return isNetworkAvailable
}
Run Code Online (Sandbox Code Playgroud)
这里的 checkNetwork 是挂起函数。在执行之前,返回值被传递给调用者(视图/活动)。如果不将“isNetworkAvailable”设为挂起,我该如何实现?。
在 checkNetwork 方法中,检查可达性调用网络调用,如下所示。
private suspend fun checkNetwork() : Boolean {
val value = GlobalScope.async<Boolean> {
val isEastReachable = async { checkEastReachable() }
if (!isEastReachable.await()) {
checkWestReachable()
} else {
true
}
}
return value.await()
}
Run Code Online (Sandbox Code Playgroud)
子方法是
private suspend fun checkEastReachable(): Boolean = coroutineScope {
withContext(Dispatchers.Default) {
repository.networkManager.callReachableEast()
}
}
private …Run Code Online (Sandbox Code Playgroud) 我正在使用 mediaplayer.xml 播放视频文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#4d4d4d"
android:gravity="center"
android:keepScreenOn="true"
android:orientation="vertical" >
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
以下 MediaPlayerActivity 类使用 SurfaceView 和 MediaPlayer 在纵向模式下播放视频时,视频似乎拉伸了一个。我想垂直居中播放视频,不应占据全屏,然后在横向模式下应以全屏模式播放。
public class MediaPlayerActivity extends Activity implements OnCompletionListener,
OnErrorListener, OnInfoListener, OnBufferingUpdateListener,
OnPreparedListener, OnSeekCompleteListener, SurfaceHolder.Callback,
MediaController.MediaPlayerControl {
private MediaController controller;
Display currentDisplay;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private MediaPlayer mediaPlayer;
int videoWidth = 0;
int videoHeight = 0;
boolean readyToPlay = false;
private String streamingVideoUrl;
private ProgressDialog dialog;
public final String …Run Code Online (Sandbox Code Playgroud) 我在android中使用Actionbar.
在我的布局中,Actionbar正确显示.但我的片段布局与Actionbar重叠.见下图.
我的布局文件如下.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/myapp_bg"
tools:context="${relativePackage}.${activityClass}" >
<LinearLayout
android:id="@+id/myapp_user_info_container"
android:layout_width="match_parent"
android:layout_height="120dp"
android:orientation="horizontal"
android:background="@drawable/myapp_profile_bg"
>
<RelativeLayout
android:id="@+id/myapp_user_info_inner_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:layout_marginBottom="25dp"
>
<com.mikhaellopez.circularimageview.CircularImageView
android:layout_width="@dimen/myapp_circular_image_size"
android:layout_height="@dimen/myapp_circular_image_size"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:src="@drawable/username" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="5dp"
android:layout_weight="2.30"
android:orientation="vertical" >
<TextView
android:id="@+id/myapp_menu_sidebar_user_mailid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:layout_marginRight="15dp"
android:layout_marginTop="3dp"
android:layout_weight="1.15"
android:gravity="top"
android:textColor="#ffffff"
android:textSize="17sp" />
<TextView
android:id="@+id/myapp_menu_sidebar_user_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="3dp"
android:layout_marginRight="15dp"
android:layout_marginTop="1dp"
android:layout_weight="1.15"
android:gravity="bottom"
android:textColor="#ffffff" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/myapp_home_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_marginTop="10dp"
android:layout_below="@+id/myapp_user_info_container"
android:layout_marginBottom="20dp"
/>
<include
android:id="@+id/myapp_footer_view_id"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
layout="@layout/myapp_footer" …Run Code Online (Sandbox Code Playgroud) android android-fragments android-activity android-actionbar
android ×8
android-file ×1
async-await ×1
fragment ×1
google-api ×1
google-plus ×1
intentfilter ×1
kotlin ×1