0

我正在编写一个包含两个活动的基本应用程序。两者都包含一个显示标题的 TextView,第一个包含一个 EditText,用户在其中键入消息并单击其侧面的按钮,第二个活动启动,显示用户键入的消息。

它有以下问题:

1.当我点击按钮时,应用程序停止说“不幸的是写 n 显示并停止。”,而不是启动第二个活动。

可以在此处找到 Logcat:在此处 输入链接描述,因为将其添加到问题中超出了限制。

首次活动代码:-

package com.practice.myfirstapp1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
//import android.view.Menu;

public class MainActivity extends Activity {
    public static final String key_name="com.practice.firstApp.key";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view){
        Intent intent= new Intent(this, SecondActivity.class);
        EditText editText=(EditText) findViewById(R.id.EditText1_MainActivity);
        String key_value= editText.getText().toString();
        intent.putExtra(key_name, key_value);
        startActivity(intent);
    }

}

第一项活动的布局: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context=".MainActivity" >

     <TextView 
        android:id="@+id/TextView1_MainActivity"
        android:layout_alignParentTop="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:text="@string/title_MainActivity"
        android:textStyle="bold"/>


    <EditText
        android:id="@+id/EditText1_MainActivity"


        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TextView1_MainActivity"

        android:hint="@string/EditText_MainActivity"
        android:textStyle="italic" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/TextView1_MainActivity"
        android:layout_toRightOf="@id/EditText1_MainActivity"

        android:text="@string/Button_MainActivity"

        android:onClick="sendMessage"/>

</RelativeLayout>

第二活动的代码: -

package com.practice.myfirstapp1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Intent intent= getIntent();
        String intent_value= intent.getStringExtra(MainActivity.key_name);

        TextView textView= new TextView(this);
        textView= (TextView) findViewById(R.id.TextView2_SecondActivity);

        textView.setText(intent_value);

    }
}

第二项活动的布局:-

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" 

    tools:context=".SecondActivity">

    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true"

        android:text="@string/title_SecondActivity"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/TextView2_SecondActivity"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

字符串资源文件:-

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

    <string name="app_name">Write n Display</string>
    <string name="action_settings">Settings</string>

    <string name="title_MainActivity">WRITE</string>
    <string name="EditText_MainActivity">Your Message here</string>

    <string name="Button_MainActivity">Send</string>

    <string name="title_SecondActivity">DISPLAY</string>

</resources>

安卓清单文件:-

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.practice.myfirstapp1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:debuggable="true" >

        <activity
            android:name="com.practice.myfirstapp1.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name="com.practive.myfirstapp1.SecondActivity"
            android:label="@string/app_name">
        </activity>
    </application>

</manifest>
4

4 回答 4

1

要解决您的第一个问题:将以下代码放入两个 xml 文件的 textview 中。

原因:你没有把android:layout_centerHorizontal="true"你的 TextView

android:layout_alignParentTop="true"
 android:layout_centerHorizontal="true"
 android:text="@string/title_MainActivity"

要解决您的第二个问题:更改第一个活动的布局:

原因:android:layout_width 是“0dp”。它应该是 wrap_content 或 fill_parent 或 match_parent

<EditText
    android:id="@+id/EditText1_MainActivity"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/TextView1_MainActivity"
    android:hint="@string/EditText_MainActivity"
    android:textStyle="italic" />

至:

<EditText
    android:id="@+id/EditText1_MainActivity" 
    android:layout_width="wrap_content" //you can put, fill_parent or match_parent
    android:layout_height="wrap_content"
    android:layout_below="@+id/TextView1_MainActivity"
    android:hint="@string/EditText_MainActivity"
    android:textStyle="italic" />

要解决您的第三个问题:更改您的 CODE OF FIRST ACTIVITY:-

原因:你把 editText=(EditText) findViewById(R.id.EditText1_MainActivity); 在 sendMessage(查看视图)中。发送消息包含一个View所以每当您在此方法中启动任何组件时,它都会在此特定视图上搜索该组件,这是不正确的。您可以在不包含任何视图参数的任何方法中启动组件。如果您想在特定视图中启动任何组件,那么您必须像 editText=(EditText)view.findViewById(R.id.EditText1_MainActivity); 一样启动它。但在您的情况下,edittext 在主视图中,因此您需要将其从 sendMessage(视图视图)中删除。

public class MainActivity extends Activity {
    public static final String key_name="com.practice.firstApp.key";
  EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText=(EditText) findViewById(R.id.EditText1_MainActivity);
    }

    public void sendMessage(View view){
        Intent intent= new Intent(this, SecondActivity.class);

        String key_value= editText.getText().toString();
        intent.putExtra(key_name, key_value);
        startActivity(intent);
    }

}

更改您的第二个活动

原因:TextView textView= new TextView(this); 不是初始化 xml 视图的任何组件的正确方法。

TextView textView= new TextView(this);
textView= (TextView) findViewById(R.id.TextView2_SecondActivity);
textView.setText(intent_value);

至:

    TextView textView;
    textView= (TextView) findViewById(R.id.TextView2_SecondActivity);
    textView.setText(intent_value);
于 2013-11-07T12:29:36.757 回答
1

你可以像这样解决你的问题

1.更换

android:gravity="center_horizontal"android:layout_gravity="center_horizontal".

2.将layout_widthwrap_content与第一个活动 xml 的 edittext 相同

3.使您的sendMessage方法公开而不是私有

要在 Eclipse 中获取 logcat,请转到 Window-> Show View -> Other -> Android-> Logcat。

或者

LogCat在 Eclipse 窗口的编辑框中写入Quick Access(右上角,就在 Open Prospective 按钮之前)。只需选择 LogCat,它将在您当前的前景中打开 LogCat 窗口

于 2013-11-08T03:49:08.373 回答
0

更改private void sendMessage(View view)public void sendMessage(View view)(私人改为公共)

第一个活动的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical" >

 <TextView 
    android:id="@+id/TextView1_MainActivity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+string/title_MainActivity"
    android:textStyle="bold"/>


<EditText
    android:id="@+id/EditText1_MainActivity"
     android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/EditText_MainActivity"
    android:textStyle="italic" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Button_MainActivity"
    android:onClick="sendMessage"/>

第二项活动的布局:-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" 
android:gravity="center_vertical"
tools:context=".SecondActivity">

<TextView 
    android:layout_alignParentTop="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+string/title_SecondActivity"
    android:textStyle="bold"/>
<TextView
    android:id="@+id/TextView2_SecondActivity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

于 2013-11-07T12:56:08.420 回答
0

Logcat 显示以下内容:

引起:android.content.ActivityNotFoundException:无法找到明确的活动类{com.practice.myfirstapp1/com.practice.myfirstapp1.SecondActivity};您是否在 AndroidManifest.xml 中声明了此活动?

您确实在清单中定义了 SecondActivity,但包名称错误( android:name="com.practive.myfirstapp1.SecondActivity" 应该是 ndroid:name="com.practice.myfirstapp1.SecondActivity" )。

<activity
            android:name="com.practice.myfirstapp1.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name="com.practive.myfirstapp1.SecondActivity"
            android:label="@string/app_name">
        </activity>

它应该是

<activity
            android:name="com.practice.myfirstapp1.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name="com.practice.myfirstapp1.SecondActivity"
            android:label="@string/app_name">
        </activity>
于 2013-11-09T02:30:25.450 回答