Hallo Im eine Android native Erweiterung in Gamemaker machen: Studio und wenn ich das Spiel laufen und versuchen, die Erweiterung i diesen Fehlercode in dem Läufer Befehlsfenster bekommen zu verwenden:Die Methode kann nicht auf Erweiterungsklasse finden:
Methode für Erweiterungsklasse kann nicht gefunden werden: folderLoader [double, double]
Es stürzt das Spiel nicht ab oder wirft keine anderen Fehler, es kann meine Methode in der Java-Datei einfach nicht finden. das ist, wie ich es einrichten:
bearbeiten Erweiterungspaket Eigenschaften General tab-
Name- DirectoryPicker
android tickte Checkbox
inject
<activity
android:name="${YYAndroidPackageName}.DirectoryPicker"
android:label="DirectoryPicker" />
manifest- inject to grandle (um meine styles.xml zu aktivieren) -
compile 'com.android.support:appcompat-v7:+'
bearbeiten Erweiterungspaket Eigenschaften-android tab-
Klasse Namen- DirectoryPicker
Permissions- android.permission.WRITE_EXTERNAL_STORAGE
bearbeiten Erweiterung Dateieigenschaften Box-
Namen- DirectoryPicker.extension .gmx
Init-Funktion- set to folderLoader
copys to Android und Android yyc Boxen
bearbeiten Erweiterungsfunktionen Box-
Namen- folderLoader
externe Namen- folderLoader
Hilfe- folderLoader (Doppel FolderOnly, Doppelshowhidden nur abgehakt)
Rückgabetyp box- selected double
Schlüssel und Wert Box- Argument 0 Doppel argument1 Doppel
der anruf Code für ein linke Maus gedrückt Ereignis Objekt:
folderLoader(1.0, 0.0);
des Asynchron-Ereignis in dem gleichen Objekt (auf gesellschaftliches Ereignis):
var type2 = string(async_load[? "type2"])
var data2 = string(async_load[? "folder"])
if type2 == "folderFound"
{
var text = data2;
}
die Java-File- DirectoryPicker.java namens
package ${YYAndroidPackageName};
import ${YYAndroidPackageName}.R;
import ${YYAndroidPackageName}.RunnerActivity;
import com.yoyogames.runner.RunnerJNILib;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
public class DirectoryPicker extends ListActivity {
private static final int EVENT_OTHER_SOCIAL = 70;
public static final String ONLY_DIRS = "onlyDirs";
public static final String SHOW_HIDDEN = "showHidden";
public static final String CHOSEN_DIRECTORY = "chosenDir";
public static final int PICK_DIRECTORY = 43522432;
private File dir;
private boolean onlyDirs = true;
private boolean showHidden = false;
public void folderLoader(double yesOrNo,double noOrYes)
{
if(yesOrNo == 0.0) onlyDirs = false;
if(yesOrNo == 1.0) onlyDirs = true;
if(noOrYes == 0.0) showHidden = false;
if(noOrYes == 1.0) showHidden = true;
findFolders();
}
public void findFolders() {
Bundle extras = getIntent().getExtras();
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File Root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
dir = new File(Root.getAbsolutePath());
}
if (extras != null) {
showHidden = extras.getBoolean(SHOW_HIDDEN, false);
onlyDirs = extras.getBoolean(ONLY_DIRS, true);
}
setContentView(R.layout.chooser_list);
setTitle(dir.getAbsolutePath());
Button btnChoose = (Button) findViewById(R.id.btnChoose);
String name = dir.getName();
if(name.length() == 0)
name = "No folders found";
btnChoose.setText(name);
btnChoose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
returnDir(dir.getAbsolutePath());
}
});
ListView lv = getListView();
lv.setTextFilterEnabled(true);
if(!dir.canRead()) {
Context context = getApplicationContext();
String msg = "Could not read folders.";
Toast toast = Toast.makeText(context, msg, Toast.LENGTH_LONG);
toast.show();
return;
}
final ArrayList<File> files = filter(dir.listFiles(), onlyDirs, showHidden);
String[] names = names(files);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, names));
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(!files.get(position).isDirectory())
return;
String path = files.get(position).getAbsolutePath();
Intent intent = new Intent((RunnerActivity.CurrentActivity), DirectoryPicker.class);
intent.putExtra(DirectoryPicker.SHOW_HIDDEN, showHidden);
intent.putExtra(DirectoryPicker.ONLY_DIRS, onlyDirs);
(RunnerActivity.CurrentActivity).startActivityForResult(intent, PICK_DIRECTORY);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY);
returnDir(path);
int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null, null);
RunnerJNILib.DsMapAddString(dsMapIndex, "type2", "folderFound");
RunnerJNILib.DsMapAddString(dsMapIndex, "folder", path);
RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL);
}
}
private void returnDir(String path) {
Intent result = new Intent();
result.putExtra(CHOSEN_DIRECTORY, path);
setResult(RESULT_OK, result);
finish();
}
public ArrayList<File> filter(File[] file_list, boolean onlyDirs, boolean showHidden) {
ArrayList<File> files = new ArrayList<File>();
for(File file: file_list) {
if(onlyDirs && !file.isDirectory())
continue;
if(!showHidden && file.isHidden())
continue;
files.add(file);
}
Collections.sort(files);
return files;
}
public String[] names(ArrayList<File> files) {
String[] names = new String[files.size()];
int i = 0;
for(File file: files) {
names[i] = file.getName();
i++;
}
return names;
}
}
Es gibt 2 verknüpfte XML-Dateien, die ich in den Layout-Ordner lege, den ich in den Ordner res, der sich im AndroidSource-Ordner befindet. Ich habe auch einige Erweiterungen heruntergeladen, um zu sehen, wie sie sie gemacht haben, und sie alle haben eine Datei im Android-Quellordner namens yymanifest.xml, die vom Spielehersteller generiert wird, diese Datei wird nie in meinem Erweiterungsprojekt erstellt, ich habe es versucht Speichern, Exportieren der Extension und erneutes Importieren, aber die Datei ist nie da, und es ist keine Datei, die du selbst machen kannst, der Spielmacher muss es produzieren, wenn es die Erweiterung macht, aber wie kann ich es dazu bringen ???
Irgendwelche Ideen oder Hilfe sehr
haben Sie versucht, den Cache vor dem Kompilieren zu löschen. Kann auch doppelte Dezimalwerte annehmen? – user2899094