这个类应该在 android manifest 中提供一个默认构造函数一个没有参数的公共构造函数

如何解决这个类应该在 android manifest 中提供一个默认构造函数一个没有参数的公共构造函数

嗨,我一次又一次地收到此错误
进程:pandaboo.run.carromking,PID:30965 java.lang.RuntimeException: 无法实例化活动 ComponentInfo{pandaboo.run.carromking/pandaboo.run.carromking.MainActivity}: java.lang.InstantiationException: java.lang.class 没有零参数构造函数

android 清单如下:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:fullBackupContent="@xml/backup_descriptor"
    tools:ignore="AllowBackup">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

构建没有错误但是.MainActivity下面的manifest中有一个红色下划线,有错误

This class should provide a default constructor (a public constructor with no arguments) (`pandaboo.run.carromking.MainActivity`)

请帮忙。


确定 MainActivity 如下:

public class MainActivity extends Activity {
@SuppressLint("StaticFieldLeak")
static Context context;
public final ThreadLocal<discovery> disc;

{
    disc = new ThreadLocal<discovery>() {
        @Override
        protected discovery initialValue() {
            return new discovery(discovery.discoveryType.MDNS);
        }
    };
}

public static Publisher gamePublisher;
Subscriber gameSubscriber;
Thread testPublishing;
RenderThread renderThread;
private final Node node;

public MainActivity(Node node) {
    this.node = node;
}

public class TestPublishing extends Application implements Runnable {

    @Override
    public void run() {
        while (gamePublisher != null) {
            Log.v("CarromGame: umundo","run");
            //gamePublisher.send(message.getBytes());
            try {
                Thread.sleep(1000);
                Log.v("CarromGame:","sleep");
            } catch (InterruptedException e) {
                Log.v("CarromGame: exception","in run");
                e.printstacktrace();
            }
            pandaboo.run.carromking.MainActivity.this.runOnUiThread(() -> {
                //tv.setText(tv.getText() + "o");
                Log.v("CarromGame: umundo","context view o");
                //contentView = true;

                renderThread = new RenderThread(new pandaboo.run.carromking.MainActivity.displayComponents().getHolder(),new MainGamePanel(pandaboo.run.carromking.MainActivity.this));
                renderThread.start();
            });
        }
    }
}

public class TestReceiver extends Receiver {
    byte[] msgb;
    String type = null;

    public void receive(Message msg) {
        msgb = msg.getData();
        type = msg.getMeta("CLASS");
        Log.v("CarromGame:umundo value","TYPE = " + type);
        for (String key : msg.getMeta().keySet()) {
            Log.v("CarromGame: umundo",key + ": " + msg.getMeta(key) + " value for class" + msg.getMeta("CLASS"));
        }

        pandaboo.run.carromking.MainActivity.this.runOnUiThread(() -> {
            //tv.setText(tv.getText() + "i");
            Log.v("CarromGame: umundo","context view i before");


            ObjectInputStream is = null;
            if ((type != null) && (!type.equals(""))) {
                try {
                    type = null;
                    ByteArrayInputStream in = new ByteArrayInputStream(msgb);
                    is = new ObjectInputStream(in);
                    is.readobject();
                    Log.v("CarromGame: umundo","inside try block " + is.toString());
                } catch (Exception e) {
                    e.printstacktrace();
                }
                assert is != null;
                Log.v("CarromGame: umundo","context view i after" + is.toString());
                renderThread = new RenderThread(new pandaboo.run.carromking.MainActivity.displayComponents().getHolder(),new MainGamePanel(pandaboo.run.carromking.MainActivity.this));
                renderThread.start();
            }
        });
    }
}

public class displayComponents extends SurfaceView implements SurfaceHolder.Callback {
    public displayComponents() {
        super(getApplicationContext());
        this.getHolder().addCallback(this);
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder,int format,int width,int height) {
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        renderThread.running = true;
        renderThread.start();
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        while (true) {
            try {
                renderThread.join();
                break;
            } catch (InterruptedException ignored) {
            }
        }

    }
}

//Called when activity is created for the first time
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    // To check if there is any active Wifi connection
    if (!wifi.isWifiEnabled()) {
        startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
    }
    //Allow the application to receive Wifi Multicast packets.
    WifiManager.MulticastLock mcLock = wifi.createMulticastLock("gameLock");
    mcLock.acquire();
    System.loadLibrary("umundoNativeJava");
    Objects.requireNonNull(disc.get()).add(node);

    Log.v("CarromGame:","on create");
    gamePublisher = new Publisher("Carrom"); //Carrom: channel Name
    node.addPublisher(gamePublisher);

    //gamePublisher.send();

    gameSubscriber = new Subscriber("Carrom",new pandaboo.run.carromking.MainActivity.TestReceiver());
    node.addSubscriber(gameSubscriber);

    testPublishing = new Thread(new pandaboo.run.carromking.MainActivity.TestPublishing());
    //contentView();
    testPublishing.start();

    Log.v("CarromGame: umundo","inside context view");
    this.requestwindowFeature(Window.FEATURE_NO_TITLE);
    //setTitle(title);
    getwindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

    MainGamePanel.PANEL_HEIGHT = this.getwindowManager().getDefaultdisplay().getHeight();
    MainGamePanel.PANEL_WIDTH = this.getwindowManager().getDefaultdisplay().getWidth();
    setContentView(new MainGamePanel(this));

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_carrom_game_umundo,menu);
    return true;
}

@Override
public boolean onoptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button,so long
    // as you specify a parent activity in AndroidManifest.xml.

    return super.onoptionsItemSelected(item);
}

}

解决方法

你不能这样做:

public MainActivity(Node node) {
    this.node = node;
}

不要为 Activity 声明任何构造函数。只有 Android 框架可以实例化 Activity,您不能定义任何额外的构造函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?