尝试存储数据时发生意外错误

时间:2014-08-12 14:34:17

标签: java android android-layout android-activity parse-platform

我在尝试启动应用程序时收到意外错误。 logcat上没有显示任何信息,但由于以下原因,我所在的场所是: 1)尝试将用户记录的搜索条值信息存储到解析中,以便以后能够检索它。存储EditText(如姓名,年龄,标题和radiobox,如性别)可以正常工作,但是当我包含应用程序无法运行的搜索时。

以下是活动代码

...

以下是布局代码 虽然我认为问题更多的是关于profileactivity活动代码

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollProfile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/dark_texture_blue" >

<RelativeLayout
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="797dp"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/profilePicturePreview"
        android:layout_width="132dp"
        android:layout_height="120dp"
        android:layout_below="@+id/textView5"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="7dp"
        android:layout_marginBottom="9dp"
        android:padding="3dp"
        android:scaleType="centerCrop"
        android:cropToPadding="true"
        android:background="@drawable/border_image"
        android:alpha="1" />

    <Button
        android:id="@+id/bRemove"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_above="@+id/etxtage"
        android:layout_alignLeft="@+id/etxtname"
        android:alpha="0.8"
        android:background="#330099"
        android:text="Upload from Facebook"
        android:textColor="#ffffff"
        android:textSize="17sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnPictureSelect"
        android:layout_width="118dp"
        android:layout_height="60dp"
        android:layout_alignRight="@+id/etxtname"
        android:layout_below="@+id/profilePicturePreview"
        android:layout_marginRight="8dp"
        android:alpha="0.8"
        android:background="#000000"
        android:onClick="pickPhoto"
        android:text="Select photo from gallery"
        android:textColor="#ffffff"
        android:textSize="17sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView4"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="9dp"
        android:text="Preferred Name"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ADD8E6"
        android:textSize="20sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="39dp"
        android:gravity="center"
        android:text="Profile Creation"
        android:textColor="#ffffff"
        android:textSize="28sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <EditText
        android:id="@+id/etxtname"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView6"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:enabled="true"
        android:hint="Please type your name here"
        android:inputType="textPersonName"
        android:textColor="#ffffff"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etxtname"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp"
        android:text="Upload your Profile Picture"
        android:textColor="#f2f2f2"
        android:textSize="18sp"
        android:textStyle="bold"
        android:typeface="sans" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_alignLeft="@+id/etxtheadline"
        android:layout_height="wrap_content"
        android:layout_below="@+id/texperience"
        android:layout_toLeftOf="@+id/textView3" >

        <RadioButton
            android:id="@+id/rimale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Male"
            android:textColor="#f2f2f2" />

        <RadioButton
            android:id="@+id/rifemale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Female"
            android:textColor="#f2f2f2" />
    </RadioGroup>

    <SeekBar
        android:id="@+id/seekBarDistance"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView12"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="11dp"
        android:progress="50" />

    <RadioGroup
        android:id="@+id/radioGroup3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView4"
        android:layout_alignTop="@+id/radioGroup2"
        android:layout_marginTop="10dp" >
    </RadioGroup>

    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/etxtheadline"
        android:layout_below="@+id/textView2" >

        <RadioButton
            android:id="@+id/rlmale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Male"
            android:textColor="#f2f2f2" />

        <RadioButton
            android:id="@+id/rlfemale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Female"
            android:textColor="#f2f2f2" />
    </RadioGroup>

    <SeekBar
        android:id="@+id/seekBarMinimumAge"
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/textView7"
        android:layout_marginTop="11dp"
        android:progress="25" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etxtage"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="Minimum Age Looking For"
        android:textColor="#f2f2f2"
        android:textSize="16sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <TextView
        android:id="@+id/seekBarDistanceValue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/tMinAge"
        android:layout_below="@+id/seekBarDistance"
        android:text="50"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#f2f2f2"
        android:textSize="20sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <TextView
        android:id="@+id/textView12"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/radioGroup1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="19dp"
        android:text="Search Distance "
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ADD8E6"
        android:textSize="20sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <TextView
        android:id="@+id/tMinAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/seekBarMinimumAge"
        android:layout_centerHorizontal="true"
        android:text="25"
        android:textColor="#f2f2f2"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tMaxAge"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="Headline"
        android:textColor="#ADD8E6"
        android:textSize="20sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <TextView
        android:id="@+id/textView14"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tMinAge"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="Maximum Age Looking For"
        android:textColor="#f2f2f2"
        android:textSize="16sp"
        android:textStyle="bold"
        android:typeface="serif" />

    <SeekBar
        android:id="@+id/seekBarMaximumAge"
        android:layout_width="221dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView14"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="11dp"
        android:progress="50" />

    <TextView
        android:id="@+id/tMaxAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/seekBarMaximumAge"
        android:layout_centerHorizontal="true"
        android:text="50"
        android:textColor="#f2f2f2"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/conditions"
        android:layout_width="280dp"
        android:layout_height="130dp"
        android:layout_below="@+id/btnConfirm"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="7dp"
        android:layout_marginTop="7dp"
        android:alpha="0.6"
        android:gravity="center"
        android:text="@string/disclaimer"
        android:textColor="#99CCFF"
        android:textSize="12sp" />

    <Button
        android:id="@+id/btnConfirm"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_below="@+id/seekBarDistanceValue"
        android:layout_marginBottom="7dp"
        android:layout_marginTop="14dp"
        android:layout_toRightOf="@+id/seekBarDistanceValue"
        android:alpha="0.8"
        android:background="#151B54"
        android:text="Confirm"
        android:textColor="#ffffff"
        android:textSize="17sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/etxtheadline"
        android:layout_width="270dp"
        android:layout_height="70dp"
        android:layout_below="@+id/textView8"
        android:layout_centerHorizontal="true"
        android:hint="A quick description of yourself"
        android:singleLine="true"
        android:textAlignment="center"
        android:textColor="#f2f2f2"
        android:textSize="18dp" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/etxtage"
        android:layout_width="230dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView4"
        android:layout_below="@+id/btnPictureSelect"
        android:layout_marginTop="48dp"
        android:ems="10"
        android:hint="Please type your age here"
        android:inputType="number"
        android:maxLength="2"
        android:textAlignment="center"
        android:textColor="#f2f2f2"
        android:textSize="18dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/radioGroup1"
        android:layout_alignRight="@+id/btnConfirm"
        android:text="Looking for"
        android:textColor="#ADD8E6"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/texperience"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup1"
        android:layout_below="@+id/etxtheadline"
        android:layout_marginTop="39dp"
        android:text="I am a"
        android:textColor="#ADD8E6"
        android:textSize="20sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnBack"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_alignBaseline="@+id/btnConfirm"
        android:layout_alignBottom="@+id/btnConfirm"
        android:layout_alignLeft="@+id/radioGroup1"
        android:alpha="0.8"
        android:background="#25383C"
        android:text="Back"
        android:textColor="#ffffff"
        android:textSize="17sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bRemove"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="19dp"
        android:text="Age"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ADD8E6"
        android:textSize="20sp"
        android:textStyle="bold"
        android:typeface="serif" />

</RelativeLayout>

</ScrollView>

提前感谢您的帮助。非常感谢任何帮助,如果您需要任何澄清,请告诉我。

更新2

public class ProfileCreation extends Activity {

    private static final int RESULT_LOAD_IMAGE = 1;
    FrameLayout layout;
    Button save;
    protected EditText mName;
    protected EditText mAge;
    protected EditText mHeadline;
    protected ImageView mprofilePicture;
    RadioButton male, female;
    String gender;
    RadioButton lmale, lfemale;
    String lgender;
    protected SeekBar seekBarMinimum;
    protected SeekBar seekBarMaximum;
    protected SeekBar seekBarDistance;


    protected Button mConfirm;


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

        RelativeLayout v = (RelativeLayout) findViewById(R.id.main); 

        v.requestFocus();

        Parse.initialize(this, "ID", "ID");

        mName = (EditText)findViewById(R.id.etxtname);
        mAge = (EditText)findViewById(R.id.etxtage);
        mHeadline = (EditText)findViewById(R.id.etxtheadline);
        mprofilePicture = (ImageView)findViewById(R.id.profilePicturePreview);
        male = (RadioButton)findViewById(R.id.rimale);
        female = (RadioButton)findViewById(R.id.rifemale);
        lmale = (RadioButton)findViewById(R.id.rlmale);
        lfemale = (RadioButton)findViewById(R.id.rlfemale);
        seekBarMinimum = (SeekBar) findViewById(R.id.sbseekBarMinimumAge);
        seekBarMaximum = (SeekBar) findViewById(R.id.sbseekBarMaximumAge);
        seekBarDistance = (SeekBar) findViewById(R.id.tvseekBarDistanceValue);




        mConfirm = (Button)findViewById(R.id.btnConfirm);
        mConfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String name = mName.getText().toString();
                String age = mAge.getText().toString();
                String headline = mHeadline.getText().toString();




                age = age.trim();
                name = name.trim();
                headline = headline.trim();

                if (age.isEmpty() || name.isEmpty() || headline.isEmpty()) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(ProfileCreation.this);
                    builder.setMessage(R.string.signup_error_message)
                        .setTitle(R.string.signup_error_title)
                        .setPositiveButton(android.R.string.ok, null);
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
                else {
                    // create the new user!
                    setProgressBarIndeterminateVisibility(true);

                    ParseUser currentUser = ParseUser.getCurrentUser();

                     seekBarMaximum.getProgress();
                     seekBarMinimum.getProgress();
                     seekBarDistance.getProgress();



                    if(male.isChecked())
                        gender = "Male";
                    else
                        gender = "Female";

                    if(lmale.isChecked())
                        lgender = "Male";
                    else
                        lgender = "Female";


                    currentUser.put("Name", name); 
                    currentUser.put("Age", age); 
                    currentUser.put("Headline", headline); 
                    currentUser.put("Gender", gender);
                    currentUser.put("Looking_Gender", lgender);
                    currentUser.put("Minimum_Age", seekBarMinimum);
                    currentUser.put("Maximum_Age", seekBarMaximum);
                    currentUser.put("Maximum_Distance_Age", seekBarDistance);




                    currentUser.saveInBackground(new SaveCallback() {
                        @Override
                        public void done(ParseException e) {
                            setProgressBarIndeterminateVisibility(false);

                            if (e == null) {
                                // Success!
                                Intent intent = new Intent(ProfileCreation.this, MoodActivity.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                startActivity(intent);
                            }
                            else {
                                AlertDialog.Builder builder = new AlertDialog.Builder(ProfileCreation.this);
                                builder.setMessage(e.getMessage())
                                    .setTitle(R.string.signup_error_title)
                                    .setPositiveButton(android.R.string.ok, null);
                                AlertDialog dialog = builder.create();
                                dialog.show();
                            }
                        }
                    });
                }
            }
        });



        SeekBar seekBar = (SeekBar) findViewById(R.id.sbseekBarDistance);
        final TextView seekBarValue = (TextView) findViewById(R.id.tvseekBarDistanceValue);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub 
                seekBarValue.setText(String.valueOf(progress));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub 
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub 
            }

        }); // Add this

        Button mcancel = (Button)findViewById(R.id.btnBack);
        mcancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                ProfileCreation.this.startActivity(new Intent(ProfileCreation.this, LoginActivity.class));
            }
        });




        SeekBar seekBarMinimum = (SeekBar) findViewById(R.id.sbseekBarMinimumAge);
        final TextView txtMinimum = (TextView) findViewById(R.id.tvMinAge);

        seekBarMinimum.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub 
                txtMinimum.setText(String.valueOf(progress));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub 
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub 
            }

        }); // Add this

        SeekBar seekBarMaximum = (SeekBar) findViewById(R.id.sbseekBarMaximumAge);
        final TextView txtMaximum = (TextView) findViewById(R.id.tvMaxAge);

        seekBarMaximum.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub 
                txtMaximum.setText(String.valueOf(progress));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub 
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub 
            }

        }); // Add this




        Button buttonLoadImage = (Button) findViewById(R.id.btnPictureSelect);
        buttonLoadImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, RESULT_LOAD_IMAGE);
            }
        });

    } 

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

            if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
                    && null != data) {
                Uri selectedImage = data.getData();
                String[] filePathColumn = { MediaStore.Images.Media.DATA };

                Cursor cursor = getContentResolver().query(selectedImage,
                        filePathColumn, null, null, null);
                cursor.moveToFirst();

                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String picturePath = cursor.getString(columnIndex);
                cursor.close();

                ImageView imageView = (ImageView) findViewById(R.id.profilePicturePreview);
                imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

            }

        }

        private byte[] readInFile(String path) throws IOException {
            // TODO Auto-generated method stub
            byte[] data = null;
            File file = new File(path);
            InputStream input_stream = new BufferedInputStream(new FileInputStream(
                    file));
            ByteArrayOutputStream buffer = new ByteArrayOutputStream();
            data = new byte[16384]; // 16K
            int bytes_read;
            while ((bytes_read = input_stream.read(data, 0, data.length)) != -1) {
                buffer.write(data, 0, bytes_read);
            }
            input_stream.close();
            return buffer.toByteArray();

        }
    }

logcat的

08-13 00:11:26.924: E/AndroidRuntime(9155): FATAL EXCEPTION: main
08-13 00:11:26.924: E/AndroidRuntime(9155): Process: com.dooba.beta, PID: 9155
08-13 00:11:26.924: E/AndroidRuntime(9155): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dooba.beta/com.dooba.beta.ProfileCreation}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.SeekBar
08-13 00:11:26.924: E/AndroidRuntime(9155):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)

2 个答案:

答案 0 :(得分:1)

课程:

再一次,不遵循命名约定会导致错误。下次我建议您在TextView前加tv,使用sb的搜索栏,b等按钮

截至Oracle Docs

  

后续字符可以是字母,数字,美元符号或   强调字符。公约(和常识)适用于此   规则也是如此。为变量选择名称时,请使用完整的单词   而不是神秘的缩写。这样做可以使您的代码更容易   阅读和理解。在许多情况下,它也会生成您的代码   自记录文件;例如,名为cadence,speed和gear的字段   比缩写版本更直观,例如s,c和   G。另请注意,您选择的名称不得是关键字或   保留字。

最后,问题本身:

    In Activity.java:
    seekBarDistance = (SeekBar) findViewById(R.id.seekBarDistanceValue);
    final TextView seekBarValue = (TextView) findViewById(R.id.seekBarDistanceValue);

    In layout.xml:
    <TextView
        android:id="@+id/seekBarDistanceValue"

答案 1 :(得分:0)

我前几天遇到此错误,由于某种原因,更改视图的ID(在您的情况下是搜索栏)解决了问题。它可能是由某种名称冲突造成的,虽然我从来没有能够解决冲突在我手中的位置。