Android Java - is not public in class; cannot be accessed from outside package

Android Java - is not public in class; cannot be accessed from outside package

Vývoj android java aplikací - jak se vypořádat s chybou ... is not public in VolleyMultipartRequest; cannot be accessed from outside package, která nastane, když nemá třída explicitně nastavené vlastnictví a stane se z ní tzv. package-private.

 

Chyba

error: VolleyMultipartRequest.DataPart is not public in VolleyMultipartRequest; cannot be accessed from outside package protected Map<String, DataPart> getByteData() {

 

Příklad: Konstukce ve VolleyMultipartRequest

Třída DataPart nemá nastavené vlastnictví a je proto package-private

class DataPart {
        private String fileName;
        private byte[] content;
        private String type;

        public DataPart() {  }

        DataPart(String name, byte[] data) {
            fileName = name;
            content = data;
        }

 

Řešení

Nastavit třídě Datapart explicitně public

  public class DataPart {
        private String fileName;
        private byte[] content;
        private String type;

        public DataPart() {  }

        public DataPart(String name, byte[] data) {
            fileName = name;
            content = data;
        }

Komentáře

Vaše reakce na Android Java - is not public in class; cannot be accessed from outside package
OL3G
#1915

24.05.2024 [1]
Ahoj,

musim se s vámi podělit s touto chybou na kterou jsem narazil při vývoji android aplikace, protože i ChatGPT mně neporadil. Mám třídu mimo Activity a potřebuji spustit intent. Bohužel to neustále vyhazovalo dokola chybu "null object reference" viz níže.

Požadovaný kód:
---------------------------------------
Intent intent = new Intent(view.getContext(), HomeActivity.class);
startActivity(intent);

Chyba:
---------------------------------------
FATAL EXCEPTION: main
Process: cz.warehouse, PID: 8874
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult
....

Řešení je:
---------------------------------------
Intent intent = new Intent(view.getContext(), HomeActivity.class);
view.getContext().startActivity(intent);

Není zač :-)
OL3G
#1922

24.06.2024 [2]
Poslední komentář
Ahoj,

narazil jsem na další jobovku při vývoji android aplikace v javě.

Chyba
------------------------------------
java.lang.ClassCastException: android.app.Application cannot be cast to cz.ol3g.warehouse.WarehouseCheckActivity

Kód
------------------------
Ve WarehouseCheckActivity volám:

new WarehouseCheck(WarehouseCheckActivity.this, getApplicationContext(), view).warehouseCheckButtonListener(warehouseCheckId, itemsCount);

a pak
new ApiSimpleRequest(context, view).saveWarehouseCheck(barcodeValue, warehouseCheckId, checkboxToPrintValue);



fix (řešení je)
---------------------------------------
Chyba je způsobena tím, že getApplicationContext() vrací instanci Application třídy, nikoliv Activity. Pokud potřebujete aktivitu, použijte this nebo WarehouseCheckActivity.this.

Takže final
new WarehouseCheck(WarehouseCheckActivity.this, this, view).warehouseCheckButtonListener(warehouseCheckId, itemsCount);

Související obsah

android

java

android-studio

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.