Fragment_homeのVideoViewでエラーNull参照が発生するtiktokのような単純なアプリケーションを構築しています.私はそれをたくさんグーグルで検索しましたが、答えを見つけることができません.Androidプロジェクトの階層構造はスクリーンショットとして与えられます
Home Fragment のコードを以下に示します。
package com.example.musically.ui.home;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.example.musically.R;
public class HomeFragment extends Fragment {
private HomeViewModel homeViewModel;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View viewInflate = inflater.inflate(R.layout.fragment_home, container, false);
//VideoView videoview=(VideoView)getView().findViewById(R.id.videoView);
VideoView videoview=(VideoView)getActivity().findViewById(R.id.videoView);
videoview.requestFocus();
String videopath="android.resource://"+getActivity().getPackageName()+"/"+R.raw.video;
Uri uri=Uri.parse(videopath);
videoview.setVideoURI(uri);
videoview.setMediaController(new MediaController(getActivity()));
//Creating MediaControllegetExternalFilesDir(r
//specify the location of media file
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
「 VideoView videoview=(VideoView)getActivity().findViewById(R.id.videoView);」にnull値が表示されています
fragment_home のコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView android:id="@+id/videoView"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</VideoView>
</RelativeLayout>
MainActivity.java
package com.example.musically;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final BottomNavigationView bottomNavigationView = (BottomNavigationView)findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
final AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_discover, R.id.navigation_upload,R.id.title_inbox,R.id.navigation_profile).build();
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
final int previousItem = bottomNavigationView.getSelectedItemId();
final int nextItem = item.getItemId();
if (previousItem != nextItem) {
switch (nextItem) {
case R.id.navigation_home:
//Add your action onClickR.id
progressload();
videoload();
break;
case R.id.navigation_discover:
break;
case R.id.navigation_upload:
break;
case R.id.title_inbox:
break;
case R.id.navigation_profile:
break;
}
}
return true;
}
}
);
// NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
//NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
//NavigationUI.setupWithNavController(navView, navController);
}
public void progressload(){
}
public void videoload()
{
}
}
エラー
2020-05-18 17:08:21.045 28646-28646/com.example.musically E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.musically, PID: 28646
android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class com.my_lib.base.VideoView
Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class com.my_lib.base.VideoView
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.my_lib.base.VideoView" on path: DexPathList[[zip file "/data/app/com.example.musically-OMaJSnd6EFYsyHyVc-cCpw==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.musically-OMaJSnd6EFYsyHyVc-cCpw==/lib/arm64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:612)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:852)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:775)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:925)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:886)
at android.view.LayoutInflater.inflate(LayoutInflater.java:521)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at com.example.musically.ui.home.HomeFragment.onCreateView(HomeFragment.java:29)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
at android.app.Activity.performStart(Activity.java:7279)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3194)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:185)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:170)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:147)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:73)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2036)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7081)
at java.lang.reflect.Method.invoke(Native Method)
2020-05-18 17:08:21.045 28646-28646/com.example.musically E/AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:928)
2020-05-18 17:08:21.068 28646-28646/com.example.musically I/Process: Sending signal. PID: 28646 SIG: 9
