여러 선택 확인란의 데이터로 사용되는 요소의 char 배열을 가진 경고 상자를 작성합니다. 내 질문은 선택한 항목 순서에 따라이 경고 상자에 1,2,3으로 값을 반환하는 방법입니까? 즉. 내가 mercur와 venus를 선택하면 나는 1,2로 값을 얻어야한다. 어떻게 구현합니까? for 루프로 시도한 후에 볼 수 있듯이 이제는 어느 체크 박스가 체크되어 있는지를 보여주고 있습니다. 도와주세요!경고 상자에서 선택한 다중 항목에 정수 값을 반환하는 방법은 무엇입니까?
public class MultiActivity extends Activity {
protected CharSequence[] _options = { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune" };
protected boolean[] _selections = new boolean[ _options.length ];
protected Button _optionsButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_optionsButton = (Button) findViewById(R.id.button1);
_optionsButton.setOnClickListener(new ButtonClickHandler() );
}
public class ButtonClickHandler implements View.OnClickListener {
public void onClick(View view) {
showDialog(0);
}
}
@Override
protected Dialog onCreateDialog(int id)
{
return
new AlertDialog.Builder(this)
.setTitle("Planets")
.setMultiChoiceItems(_options, _selections, new DialogSelectionClickHandler())
.setPositiveButton("OK", new DialogButtonClickHandler())
.create();
}
public class DialogSelectionClickHandler implements DialogInterface.OnMultiChoiceClickListener
{
public void onClick(DialogInterface dialog, int clicked, boolean selected)
{
Log.i("ME", _options[ clicked ] + " selected: " + selected);
}
}
public class DialogButtonClickHandler implements DialogInterface.OnClickListener
{
public void onClick(DialogInterface dialog, int clicked)
{
switch(clicked)
{
case DialogInterface.BUTTON_POSITIVE:
printSelectedPlanets();
break;
}
}
}
protected void printSelectedPlanets(){
for(int i = 0; i < _options.length; i++){
Log.i("ME", _options[ i ] + " selected: " + _selections[i]);
String abc = _options[ i ] + " selected: " + _selections[i];
TextView ab = (TextView)findViewById(R.id.textView1);
ab.setText(abc);
System.out.print(abc);
}
}
}는 내가 아래에 언급 된 코드를 실행하려고 할 때 난 내 로그 캣에 인쇄 된 아래의 오류가 발생했습니다 참조하십시오.
11-21 14:23:59.905: E/AndroidRuntime(439): FATAL EXCEPTION: main 11-21 14:23:59.905: E/AndroidRuntime(439): java.lang.NullPointerException 11-21 14:23:59.905: E/AndroidRuntime(439): at com.workspace.multi.peek$2.onClick(peek.java:47) 11-21 14:23:59.905: E/AndroidRuntime(439): at com.android.internal.app.AlertController$AlertParams$4.onItemClick(AlertController.java:886) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.widget.ListView.performItemClick(ListView.java:3382) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.os.Handler.handleCallback(Handler.java:587) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.os.Handler.dispatchMessage(Handler.java:92) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.os.Looper.loop(Looper.java:123) 11-21 14:23:59.905: E/AndroidRuntime(439): at android.app.ActivityThread.main(ActivityThread.java:4627) 11-21 14:23:59.905: E/AndroidRuntime(439): at java.lang.reflect.Method.invokeNative(Native Method) 11-21 14:23:59.905: E/AndroidRuntime(439): at java.lang.reflect.Method.invoke(Method.java:521) 11-21 14:23:59.905: E/AndroidRuntime(439): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 11-21 14:23:59.905: E/AndroidRuntime(439): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-21 14:23:59.905: E/AndroidRuntime(439): at dalvik.system.NativeStart.main(Native Method) 11-21 14:33:05.145: D/AndroidRuntime(495): Shutting down VM 11-21 14:33:05.145: W/dalvikvm(495): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 11-21 14:33:05.166: E/AndroidRuntime(495): FATAL EXCEPTION: main 11-21 14:33:05.166: E/AndroidRuntime(495): java.lang.NullPointerException 11-21 14:33:05.166: E/AndroidRuntime(495): at com.workspace.multi.MultiActivity$1.onClick(MultiActivity.java:51) 11-21 14:33:05.166: E/AndroidRuntime(495): at com.android.internal.app.AlertController$AlertParams$4.onItemClick(AlertController.java:886) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.widget.ListView.performItemClick(ListView.java:3382) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.os.Handler.handleCallback(Handler.java:587) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.os.Handler.dispatchMessage(Handler.java:92) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.os.Looper.loop(Looper.java:123) 11-21 14:33:05.166: E/AndroidRuntime(495): at android.app.ActivityThread.main(ActivityThread.java:4627) 11-21 14:33:05.166: E/AndroidRuntime(495): at java.lang.reflect.Method.invokeNative(Native Method) 11-21 14:33:05.166: E/AndroidRuntime(495): at java.lang.reflect.Method.invoke(Method.java:521) 11-21 14:33:05.166: E/AndroidRuntime(495): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 11-21 14:33:05.166: E/AndroidRuntime(495): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-21 14:33:05.166: E/AndroidRuntime(495): at dalvik.system.NativeStart.main(Native Method)
정수 배열을 사용하여 bulid하고 싶지 않은 것을 참조하십시오. 나는 문자열이나 char 배열을 원한다. 나는 원하는 모든 값을 수성, 금성 같은 String으로 선택하고, 또한 위치 2,4로 Integer를 원하는 값을 원한다. – Froyo
위치가있는 정수 배열이 있으므로 값을 가져와야합니다. for (int p : pos) {String s = str [p] .toString(); } // 여기서 p는 위치이고, str은 Charsequence array ...입니다. –