Система Mathematica имеет функцию StartAbort
, которая позволяет перехватывать и обрабатывать генерируемые пользователем и программные Abort
s. Но он не позволяет перехватывать прерывания, создаваемые такими функциями, как TimeConstrained
и MemureConstrained
:
TimeConstrained[CheckAbort[Pause[100], Print["From CheckAbort"]], 1]
(не печатает «From StartAbort»
).
Есть ли способ уловить такие прерывания в Mathematica ?
EDIT: Я знаю, что третий аргумент TimeConstrained
и MemureConstrained
позволяет оценить некоторый код в случае прерывания, но это не то, что мне нужно: мне нужен способ обработки таких прерываний полностью внутри моей функции, позволяющий пользователю не заботиться о его внутренних устройствах.
P.S. Причина, по которой это необходимо, заключается в том, что у меня есть функция, которая создает объекты MathLink
, которые должны быть закрыты в случае любых прерываний или прерываний, но не в других случаях.
-121--1751159-
Я работаю над небольшим приложением для Android. Часть того, что мне нужно для этого приложения для Android, это иметь сетку, которая как горизонтально, так и вертикально прокручивается. Однако крайний левый столбец должен быть заморожен (всегда на экране и не является частью горизонтальной прокрутки). Аналогично, строка верхнего заголовка должна быть заморожена (не является частью вертикальной прокрутки)
Этот картинный, надеюсь, опишет это ясно, если это не имеет большого смысла:
Клавиша :
Тем не менее, у меня проблемы с тем, чтобы оба этих измерения работали. (то есть, я могу получить нижнюю часть, чтобы быть всем синим, или я могу получить правую часть, чтобы быть всем красным, но не полностью, как выше) Код у меня ниже, и в основном будет производить следующее:
result _ grid.xml:
Код Java:
private boolean showSummaries;
private TableLayout summaryTable;
private TableLayout frozenTable;
private TableLayout contentTable;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result_grid);
Button backButton = (Button)findViewById(R.id.backButton);
frozenTable = (TableLayout)findViewById(R.id.frozenTable);
contentTable = (TableLayout)findViewById(R.id.contentTable);
ArrayList content;
// [Removed Code] Here I get some data from getIntent().getExtras() that will populate the content ArrayList
PopulateMainTable(content);
}
private void PopulateMainTable(ArrayList content) {
// [Removed Code] There is some code here to style the table (so it has lines for the rows)
for (int i = 0; i < content.size(); i++){
TableRow frozenRow = new TableRow(this);
// [Removed Code] Styling of the row
TextView frozenCell = new TextView(this);
frozenCell.setText(content.get(i)[0]);
// [Removed Code] Styling of the cell
frozenRow.addView(frozenCell);
frozenTable.addView(frozenRow);
// The rest of them
TableRow row = new TableRow(this);
// [Renoved Code] Styling of the row
for (int j = 1; j < content.get(0).length; j++) {
TextView rowCell = new TextView(this);
rowCell.setText(content.get(i)[j]);
// [Removed Code] Styling of the cell
row.addView(rowCell);
}
contentTable.addView(row);
}
}
Вот как он выглядит:
Вот как он выглядит при небольшой горизонтальной прокрутке
Вот как он выглядит при вертикальной прокрутке, обратите внимание, что вы теряете заголовки! Это проблема!
Две последние вещи!
Во-первых, я не могу поверить, что это уже где-то не существует. (У меня нет Android, поэтому я не мог искать приложения, которые могут это сделать). ОднакоЯ искал как минимум два дня в StackOverflow и в Интернете в поисках решения для GridView или TaureLayout, которое обеспечит мне то, что я хотел бы сделать, и еще не нашел решения. Как бы мне ни было неловко за то, что я пропустил его, если кто-то знает о ресурсе, который описывает, как это сделать, я был бы благодарен!
Во-вторых, я попытался «принудить» к этому решению, так как добавил два LinearLayout, один из которых захватывал часть «Header» сетки, которую я хочу создать, и другой для нижней части «content» сетки, которую я хочу создать. Я могу опубликовать этот код, но это уже довольно долго, и я надеюсь, что то, что я имею в виду, очевидно. Это частично сработало , но проблема здесь в том, что заголовки и столбцы содержимого никогда не выстраивались. Я хотел использовать getWidth () и setMinimumWidth () для TextViews в пределах TaureRows, но, как описано здесь , эти данные были недоступны во время onCreate (и также были недоступны в пределах onPostCreate). Я не смог найти способ, чтобы это сработало, и решение в этой области также было бы замечательным!
Если вы сделали это так далеко до конца, кудос вам!