2016-08-09 5 views
0

Hi Im делает андроид родное расширения в Gamemaker: Студию и когда я запускаю игру и попытаться использовать расширение я получить этот код ошибки в командном окне бегуна:Не удается найти метод на классе расширения:

Невозможно найти метод в классе расширения: folderLoader [double, double]

Это не сбой игры или выброс любых других ошибок, она просто не может найти мой метод в java-файле. это то, как я его настроить:

редактировать свойства-общие пакеты расширения TAB-

name- DirectoryPicker

андроида флажок галочкой

инъекционные к manifest-

<activity 
android:name="${YYAndroidPackageName}.DirectoryPicker" 
android:label="DirectoryPicker" /> 

вводят в градиент (для активации моих стилей.xml) -

compile 'com.android.support:appcompat-v7:+' 

редактировать свойства-андроид пакет расширения TAB-

Класс name- DirectoryPicker

Permissions- android.permission.WRITE_EXTERNAL_STORAGE

свойств файла редактировать расширение box-

name- DirectoryPicker.extension .gmx

функция init- установить в папкуLoader

Копирует TO- галочкой андроид и андроид коробки YYC только

редактировать расширение функций box-

name- Загрузчик папок

внешний name- Загрузчик папок

help- Загрузчик папок (двойной FolderOnly, двойной ShowHidden)

тип возвращенного типа- выбранный двойной

ключа и значение box- аргумент 0 двойного argument1 двойного

код вызова для левой кнопкой мыши прессованного события объекта:

folderLoader(1.0, 0.0); 

события асинхронного в одном объекте (набор для социального события):

var type2 = string(async_load[? "type2"]) 
var data2 = string(async_load[? "folder"]) 
if type2 == "folderFound" 
{ 
var text = data2; 
} 

Java-Файл- имени DirectoryPicker.java

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; 
} 
} 

Есть два связанных файла xml, которые я поместил в папку макета, которую я установил в папку res, которая находится в папке AndroidSource. Я также загрузил некоторые расширения, чтобы посмотреть, как они их сделали, и все они имеют файл в исходной папке Android с именем yymanifest.xml, который генерируется gamemaker, этот файл никогда не создается в моем проекте расширения, я пробовал сохранять, экспортировать расширение и повторно импортировать его, но файл никогда не существует, и это не файл, который вы можете сделать самим, gamemaker должен произвести его, когда он делает расширение, но как я могу заставить его сделать это ???

Любые идеи или помощь будет высоко оценена

+0

Вы пытались очистить кеш перед компиляцией. Также можно удвоить десятичные значения? – user2899094

ответ

3

Ну все, кажется, хорошо вам нужно упомянуть, где вы папку в menifest файле.

+0

ОК классный и спасибо! Я пренебрег этим, я дам ему попробовать – Wraithious

+0

Хорошо, поэтому я работал над этим в течение нескольких дней, все та же ошибка: Не удалось найти метод в классе расширения: null. Я знаю, работая с java, что исключения null происходят, когда вы ссылаетесь на переменную un initialized, но насколько я могу видеть, что все инициализировано, я несколько раз обновлял свой java-файл, поэтому я собираюсь изменить свой исходный вопрос с помощью новый файл и другие вещи, которые я пробовал – Wraithious