10

Java と Eclipse を使用してアプリケーションを作成しようとしています (現在 B4A を使用していますが、利用可能なリソースとライブラリを作成する機能を拡張したいと考えています)。

フラグメントを使用してダイアログを実装しようとするときは、こちらの例に従いました。

私は得続けます

05-06 13:40:21.060: E/SensorManager(18538): thread start
05-06 13:40:21.105: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0

デバッグを試みましたが、エラーが発生してもデバッガーが停止することはありません (このデバッガーは初めてなので、エラーを解決する方法がわかりません)。

例外が発生している場所を誰かが見ていますか? (どこにも太った指ではないことを確認するために、git経由でダウンロードして試してみましたが、logcatでまったく同じエラーを受け取りました)

ここに私のmainActivity.javaがあります:

package com.example.fragmenttest;
import com.example.fragmenttest.EditNameDialog.EditNameDialogListener;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends FragmentActivity  implements EditNameDialogListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_edit_name);
    showEditDialog();
}

private void showEditDialog() {
    FragmentManager fm = getSupportFragmentManager();
    EditNameDialog editNameDialog = new EditNameDialog();
    editNameDialog.show(fm, "fragment_edit_name");
}

@Override
public void onFinishEditDialog(String inputText) {
    Toast.makeText(this, "Hi, " + inputText, Toast.LENGTH_SHORT).show();
}
}

そして、ここに EditNameDialog.java があります:

package com.example.fragmenttest;

import android.support.v4.app.DialogFragment;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager.LayoutParams;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;


public class EditNameDialog extends DialogFragment implements OnEditorActionListener {

public interface EditNameDialogListener {
    void onFinishEditDialog(String inputText);
}

private EditText mEditText;

public EditNameDialog() {
    // Empty constructor required for DialogFragment
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_edit_name, container);
    mEditText = (EditText) view.findViewById(R.id.txt_your_name);
    getDialog().setTitle("Hello");

    // Show soft keyboard automatically
    mEditText.requestFocus();
    getDialog().getWindow().setSoftInputMode(
            LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    mEditText.setOnEditorActionListener(this);

    return view;
}

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    if (EditorInfo.IME_ACTION_DONE == actionId) {
        // Return input text to activity
        EditNameDialogListener activity = (EditNameDialogListener) getActivity();
        activity.onFinishEditDialog(mEditText.getText().toString());
        this.dismiss();
        return true;
    }
    return false;
}
}

そして私の文字列リソースファイル:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">fragmentTest</string>
    <string name="hint_value">hint</string>
    <string name="your_name">Your name</string>

</resources>

logcat からの完全な StackTrace: (上部と変わらない)

05-06 13:40:21.060: E/SensorManager(18538): thread start
05-06 13:40:21.105: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.105: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.110: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.200: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.205: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.205: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.210: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.215: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.275: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.275: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.300: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.300: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.300: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.470: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.470: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.725: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
05-06 13:40:21.725: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0

編集:4.1.2を実行しているGalaxy S3で実行されていました。2.3.4 を実行している Galaxy SL で試してみたところ、logcat の問題はまったくありませんでした。これは、プラットフォームに関連していることを示していますが、私の検索では、Android バージョンに関連するものは何も見つかりませんでした。フォローアップの質問ですが、このエラーの原因となる可能性のある JB (または私が言及した他のもの) の問題を知っている人はいますか?

4

1 に答える 1