【问题标题】:findViewById not finding ImageButton in FragmentfindViewById 在 Fragment 中找不到 ImageButton
【发布时间】:2018-08-16 18:32:44
【问题描述】:

我正在尝试在我正在创建的信息应用程序的片段中流式传输视频。当我创建图像按钮来控制视频时,findViewByIdbtnPlayPause = (ImageButton)findViewById(R.id.play_pause_button); 行上给我一个“无法解析符号”错误,但是它可以在同一片段中找到视频视图。这是我的MainActivity.java 中的onCreate 方法:

public class MainActivity extends AppCompatActivity implements 
NavigationView.OnNavigationItemSelectedListener{
private DrawerLayout drawer;
ProgressDialog mDialog;
VideoView videoView;
ImageButton btnPlayPause;

String videoURL = "https://vimeo.com/284762179";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, 
    toolbar,
            R.string.navigation_drawer_open, 
    R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    if (savedInstanceState == null { getSupportFragmentManager() 
.beginTransaction().replace(R.id.fragment_containter,
                new InformationFragment()).commit();
        navigationView.setCheckedItem(R.id.nav_information);
    }

    videoView = (VideoView)findViewById(R.id.hypori_video);
    btnPlayPause = (ImageButton)findViewById(R.id.play_pause_button);
    btnPlayPause.setOnClickListener(this);
 }

 @Override
 public void onClick(View v){
    mDialog = new ProgressDialog(MainActivity.this);
    mDialog.setMessage("Please wait...");
    mDialog.setCanceledOnTouchOutside(false);
    mDialog.show();

    try {
        if (!videoView.isPlaying()) {
            Uri uri = Uri.parse(videoURL);
            videoView.setVideoURI(uri);
            videoView.setOnCompletionListener(new 
     MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    btnPlayPause.setImageResource(R.drawable.ic_play_arrow);
                }
            });
        }
        else
        {
            videoView.pause();
            btnPlayPause.setImageResource(R.drawable.ic_play_arrow);
        }
    }
    catch (Exception e)
    {

    }
    videoView.requestFocus();
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            mDialog.dismiss();
            mp.setLooping(false);
            videoView.start();
            btnPlayPause.setImageResource(R.drawable.ic_pause);
         }
     });
 }

这是包含 VideoView 和 ImageButton 的 Fragment 的 XML:

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@android:color/background_light">

<TextView
    android:id="@+id/the_hypori_solution"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:background="#b41518"
    android:padding="10dp"
    android:text="@string/the_hypori_solution"
    android:textAlignment="center"
    android:textColor="@android:color/background_light"
    android:textSize="30sp"
    android:textStyle="bold" />

<ScrollView
    android:id="@+id/solution_scroll_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/the_hypori_solution">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center">

            <TextView
                android:id="@+id/virtualMobileInfrastructure"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="10dp"
                android:text="@string/virtual_mobile_infrastructure"
                android:textColor="@android:color/black"
                android:textSize="30sp"
                android:textStyle="italic" />

            <TextView
                android:id="@+id/vmi_info"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/virtualMobileInfrastructure"
                android:layout_marginTop="10dp"
                android:text="@string/vmi_info"
                android:textAlignment="center"
                android:textColor="@android:color/black"
                android:textSize="20sp" />

            <VideoView
                android:id="@+id/hypori_video"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/vmi_info"
                android:layout_centerHorizontal="true"/>

            <ImageButton
                android:id="@+id/play_pause_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/hypori_video"
                android:layout_centerHorizontal="true"
                app:srcCompat="@drawable/ic_play_arrow"/>

            <ImageView
                android:id="@+id/hypori_solution_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/play_pause_button"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="15dp"
                android:layout_marginTop="10dp"
                android:contentDescription="@string/hypori_solution_image"
                app:srcCompat="@drawable/hypori_solution__vertical_edited"/>

            <TextView
                android:id="@+id/solution_tv_vmi"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/hypori_solution_image"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:text="@string/components_of_the_vmi_platform"
                android:textAlignment="center"
                android:textColor="@android:color/black"
                android:textSize="30sp" />

            <ImageView
                android:id="@+id/hypori_client_vmi"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/solution_tv_vmi"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="5dp"
                android:layout_marginStart="5dp"
                android:contentDescription="@string/hypori_client"
                app:srcCompat="@drawable/hypori_client" />

            <TextView
                android:id="@+id/hypori_client_vmi_tv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignTop="@+id/hypori_client_vmi"
                android:layout_marginLeft="10dp"
                android:layout_marginStart="10dp"
                android:layout_toEndOf="@+id/hypori_client_vmi"
                android:layout_toRightOf="@+id/hypori_client_vmi"
                android:text="@string/hypori_client"
                android:textColor="@android:color/black"
                android:textSize="21sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/hypori_client_vmi_tv2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/hypori_client_vmi_tv1"
                android:layout_alignStart="@+id/hypori_client_vmi_tv1"
                android:layout_below="@+id/hypori_client_vmi_tv1"
                android:layout_marginTop="5dp"
                android:text="@string/"
                android:textColor="@android:color/black"
                android:textSize="17sp" />

            <ImageView
                android:id="@+id/hypori_vmd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/hypori_client_vmi_tv2"
                android:layout_marginTop="30dp"
                android:layout_marginLeft="5dp"
                android:layout_marginStart="5dp"
                android:contentDescription="@string/"
                app:srcCompat="@drawable/" />

            <TextView
                android:id="@+id/hypori_vmd_tv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/hypori_client_vmi_tv1"
                android:layout_alignStart="@+id/hypori_client_vmi_tv1"
                android:layout_alignTop="@+id/hypori_vmd"
                android:text="@string/hypori_virtual_mobile_device"
                android:textColor="@android:color/black"
                android:textSize="21sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/hypori_vmd_tv2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@id/hypori_client_vmi_tv1"
                android:layout_alignStart="@+id/hypori_client_vmi_tv1"
                android:layout_below="@+id/hypori_vmd_tv1"
                android:layout_marginTop="5dp"
                android:text="@string/
                android:textColor="@android:color/black"
                android:textSize="17sp" />

            <ImageView
                android:id="@+id/hypori_admin_console_iv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/hypori_vmd_tv2"
                android:layout_marginTop="30dp"
                android:layout_marginLeft="5dp"
                android:layout_marginStart="5dp"
                android:contentDescription="@string/hypori_admin_console"
                app:srcCompat="@drawable/hypori_admin_console" />

            <TextView
                android:id="@+id/hypori_admin_console_tv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@id/hypori_client_vmi_tv1"
                android:layout_alignStart="@+id/hypori_client_vmi_tv1"
                android:layout_alignTop="@+id/hypori_admin_console_iv"
                android:text="@string/hypori_admin_console"
                android:textColor="@android:color/black"
                android:textSize="21sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/hypori_admin_console_tv2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@id/hypori_client_vmi_tv1"
                android:layout_alignStart="@+id/hypori_client_vmi_tv1"
                android:layout_below="@+id/hypori_admin_console_tv1"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:text="@string/
                android:textColor="@android:color/black"
                android:textSize="17sp" />

        </RelativeLayout>

    </LinearLayout>

</ScrollView>

【问题讨论】:

  • 什么意思找不到我的图片按钮的ID?您是否在 findViewById 之后放置了一条 Log 语句并返回 null?
  • 我收到“无法解析符号”错误。 @mTak
  • 在哪里?_________
  • btnPlayPause = (ImageButton)findViewById(R.id.play_pause_button); @mTak

标签: java android android-studio android-fragments imagebutton


【解决方案1】:

将活动类的标题更改为:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, View.OnClickListener

你忘了实现 View.OnClickListener 所以 onClick() 方法没有覆盖

【讨论】:

  • 这并没有解决我的“找不到符号”错误。但我很感激你指出我的代码中的缺陷:)
  • @Audicy 我复制了您的 xml 和您的活动代码,没有错误。所以清理项目并重建
  • 谢谢你修复它。不知道为什么我忘记了这个功能。 @mTak
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2012-05-15
相关资源
最近更新 更多