#android #checkbox #forceclose #buttonbar
#Android #флажок #forceclose #панель кнопок
Вопрос:
я пытался создать приложение с панелью кнопок с кнопками добавления / выхода внизу и EditText вверху.
когда я нажимаю кнопку добавить, я хочу, чтобы приложение добавляло флажки с текстом из EditText.
но когда я пытаюсь запустить приложение, оно принудительно закрывается.
logcat не показывает абсолютно ничего из моего приложения, консоль говорит:
[2014-06-24 18:41:06 - CheckList] Starting activity com.pzayx.checklist.CheckList on device 7a0ec297
[2014-06-24 18:41:06 - CheckList] ActivityManager: WARNING: linker: app_process has text relocations. This is wasting memory and is a security risk. Please fix.
[2014-06-24 18:41:06 - CheckList] ActivityManager: WARNING: linker: app_process has text relocations. This is wasting memory and is a security risk. Please fix.
[2014-06-24 18:41:07 - CheckList] ActivityManager: Starting: Intent {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.pzayx.checklist/.CheckList }
[2014-06-24 18:41:07 - CheckList] Attempting to connect debugger to 'com.pzayx.checklist' on port 8960
кажется, я не могу найти много информации о том, что «app_process имеет текстовые перемещения. Это приводит к пустой трате памяти и представляет угрозу безопасности. Пожалуйста, исправьте» и подозревайте, что там лежит демоническое порождение.
вот источник этого CheckList.java
package com.pzayx.checklist;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
public class CheckList extends Activity {
LinearLayout lil = (LinearLayout) findViewById(R.id.LinearMain);
EditText mTextInput;
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_check_list);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
setupWidgets();
}
private void setupWidgets() {
mTextInput = (EditText) findViewById(R.id.editText1);
Button addBtn = (Button) findViewById(R.id.button_add);
addBtn.setOnClickListener(addListener);
Button exitBtn = (Button) findViewById(R.id.button_exit);
exitBtn.setOnClickListener(exitListener);
}
private OnClickListener addListener = new OnClickListener() {
public void onClick(View v) {
doSaveButtonPress();
}
};
private OnClickListener exitListener = new OnClickListener() {
public void onClick(View v) {
doExitButtonPress();
}
};
public void doSaveButtonPress() {
String text = mTextInput.getText().toString();
CheckBox cb = new CheckBox(getApplicationContext());
cb.setId(i);
cb.setText(text);
lil.addView(cb);
mTextInput.setText("");
i ;
}
public void doExitButtonPress() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Exit Application?");
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
}
}
А вот мой исходный код макета
<LinearLayout
android:layout_below="@ id/LinearMain"
android:id="@ id/LinearLayoutButtons"
style="?android:buttonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:divider="?android:attr/dividerVertical"
android:orientation="horizontal"
android:showDividers="middle" >
<!-- <requestFocus /> -->
<Button
android:id="@ id/button_add"
style="?android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/add"
android:layout_gravity="bottom" />
<View
android:id="@ id/ViewColorPickerHelper"
android:layout_width="1dip"
android:layout_height="40dip"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="4dip"
android:layout_marginTop="4dip"
android:background="?android:attr/dividerVertical"
android:layout_gravity="bottom"/>
<Button
android:id="@ id/button_exit"
style="?android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/exit"
android:layout_gravity="bottom" />
<!-- Checkbox Area -->
</LinearLayout>
<LinearLayout
android:id="@ id/LinearMain"
android:layout_width="match_parent"
android:layout_height="420dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:orientation="vertical" >
<EditText
android:id="@ id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/editText"
android:ems="10" />
</LinearLayout>
</RelativeLayout>
был бы признателен, если бы кто-нибудь мог помочь мне разобраться в этом!
Спасибо!
Комментарии:
1. что это? LinearLayout lil = (LinearLayout) findViewById(R.id.LinearMain); приложение должно аварийно завершиться, прежде чем вы начнете добавлять textview. Вы еще не увеличили представление
2. да, он разбился еще до запуска. я новичок в разработке Android, но теперь я знаю, что искать. Спасибо!