Вы не можете легко читать локальные файлы, по крайней мере, не в Chrome, а, возможно, и в других браузерах.
Простейшим обходным путем является простое включение данных JSON в вашем файле сценария, а затем просто избавиться от вашего вызова d3.json
и сохранить код в обратном вызове, который вы передаете ему.
Тогда ваш код будет выглядеть следующим образом:
json = { ... };
root = json;
root.x0 = h / 2;
root.y0 = 0;
...
Много способов вы можете сделать. Я собираюсь поделиться одним примером.
Реализуйте View.OnLongClickListener следующим образом
private void setupLongPress() {
imageButton.setOnLongClickListener(new View.OnLongClickListener(){
@Override
public boolean onLongClick(View v){
// here your staff
// we added dialog method here as follows
createPreviewDialog();
return false;
}
});
}
Теперь используйте LayoutInflater для надувания нового макета в качестве всплывающих окон
private Dialog createPreviewDialog() {
View view = LayoutInflater.from(getContext()).inflate(R.layout.dialog_preview, null);
LinearLayout closeButton = view.findViewById(R.id.close);
closeButton.setOnClickListener (new View.OnClickListener (){
@Override
public void onClick ( View view ) {
dismiss();
}
});
View okButton = view.findViewById(R.id.ok);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
// here your staff
}
});
builder.setView(view);
return builder.create();
}