gpt4 book ai didi

java - 一起使用 Fragment 和 AppCompatActivity 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:41 34 4
gpt4 key购买 nike

您好,我正在尝试制作一个使用两个不同类的应用程序,我知道我不能在 Java 中对两个类使用扩展。我将如何将下面的代码分成两个不同的类,以便一个可以扩展 Fragment 和另一个 AppCompatActivity?

package com.example.oliver.myapplication;

import android.support.v4.app.Fragment;
import android.app.AlertDialog;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

import java.util.Random;


public class MyFragment extends AppCompatActivity, Fragment {

Button b, b2;
MediaPlayer nice, burp;
ImageButton img;
int n;
MediaPlayer [] s = new MediaPlayer[6];
AlertDialog.Builder adb;

public static MyFragment newInstance() {
MyFragment fragment = new MyFragment();
return fragment;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.my_fragment, container, false);
img = (ImageButton) rootView.findViewById(R.id.img);

s[0] = MediaPlayer.create(MyFragment.this, R.raw.burp);
s[1] = MediaPlayer.create(MyFragment.this, R.raw.robert);
s[2] = MediaPlayer.create(MyFragment.this, R.raw.burp2);



img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < 1; i++) {
Random r = new Random();
n = r.nextInt(3);

s[n].start();
}
}
});return rootView;


}}

最佳答案

以上代码不是有效的 Java。

一个类只能扩展一个类。您的 Activity/fragment 同时扩展了 2 个类。

上面给出的类是一个有效的 Fragment 子类,除了这些行:

        s[0] = MediaPlayer.create(MyFragment.this, R.raw.burp);
s[1] = MediaPlayer.create(MyFragment.this, R.raw.robert);
s[2] = MediaPlayer.create(MyFragment.this, R.raw.burp2);

将“MyFragment.this”替换为“MyFragment.getActivity()”。

现在您可以将“extends AppCompatActivity, Fragment”替换为“extends Fragment”

现在您有了一个有效的 fragment 。

自己创建 AppCompatActivity。查看如何将 fragment 添加到 Activity 中。

作为良好编程实践的提示,我建议您将 onCreateView() 中的以下代码移动到 onActivityCreated() 中:

        img = (ImageButton) rootView.findViewById(R.id.img);

s[0] = MediaPlayer.create(MyFragment.this, R.raw.burp);
s[1] = MediaPlayer.create(MyFragment.this, R.raw.robert);
s[2] = MediaPlayer.create(MyFragment.this, R.raw.burp2);



img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < 1; i++) {
Random r = new Random();
n = r.nextInt(3);

s[n].start();
}
}
});

改变

        img = (ImageButton) rootView.findViewById(R.id.img);

        img = (ImageButton) getView().findViewById(R.id.img);

关于java - 一起使用 Fragment 和 AppCompatActivity 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254207/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com