0

我正在开发一个应用程序,它将执行以下操作:

  1. 允许第一个用户“Sam”在 editText 字段中键入他/她的消息。
  2. 按屏幕底部的“Alex”按钮启动新活动ActivityAlex
  3. 允许用户“Alex”编辑 editText 字段。
  4. 按屏幕底部的“Sam”按钮重新启动活动 MainActivity

到目前为止,我认为我已经完成了大部分工作,但我一直在坚持如何修复程序,以便它可以完成我想要它做的事情。

这是我的日志猫

这是我的主要活动:

package com.chatfriends;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

public class MainActivity extends Activity {

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

    private Button alexButton; //initialize the buttons for "alex" and "sam"

    public void initialize(){

        alexButton = (Button) findViewById(R.id.button1); // initializing the buttons by location. Also need to define the button with two states (regular and yellow)

       alexButton.setOnClickListener(new OnClickListener(){
        public void onClick(View arg0){
        alexbutton(arg0);
        }

        public void alexbutton(View v) {
            Intent intent = new Intent(MainActivity.this, ActivityAlex.class); //the intent is telling the app what you want it to do. Think about setting the intent to the buttons.
            startActivity(intent);

        }
    });
  }
}

这是我的活动亚历克斯:

package com.chatfriends;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class ActivityAlex extends MainActivity {

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


        private Button samButton; //initialize the buttons for "alex" and "sam"

        public void initialize(){

            samButton = (Button) findViewById(R.id.button2); // initializing the buttons by location. Also need to define the button with two states (regular and yellow)

        samButton.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0){
            samButton(arg0);
            }

            public void samButton(View v) {
                Intent intent = new Intent(ActivityAlex.this, MainActivity.class); //the intent is telling the app what you want it to do. Think about setting the intent to the buttons.
                startActivity(intent);

            }
        });
    }
}

这是我的清单代码:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" tools:ignore="MissingPrefix"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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=".ActivityAlex" />
    </application>

</manifest>

这是 XML 布局文件。

活动主:

<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"
    tools:context=".MainActivity" >

        <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="@string/userName1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:ems="10"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="26dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/button1"
        android:onClick="startalexbutton" />

</RelativeLayout>

activityex.xml

<?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"
    tools:context=".ActivityAlex" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="@string/userName2"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:ems="10"
        android:inputType="textMultiLine" >
    </EditText>


    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="26dp"
        android:layout_marginRight="20dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/button2"
        android:onClick="startMainActivity" />

 </RelativeLayout>
4

3 回答 3

0

这是因为您为 xml 中的每个按钮使用以下行注册了按钮点击。

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="26dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/button1"
        android:onClick="startalexbutton" />

 <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="26dp"
        android:layout_marginRight="20dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/button2"
        android:onClick="startMainActivity" />

但是您尚未使用此名称定义任何 onClick() 方法。从 xml 中删除这些 onclick 行,或者使用相同的名称定义这些方法来监听按钮,而不是再次设置 onClickListeners()。如果您决定使用您在 xml 中注册的名称定义 onClick 方法,请执行以下操作。

public void startalexbutton(View view)
{
// Do what ever you need here when button is clicked. Because the control comes to this method when the button is clicked. 
}

如果这样做,则不再需要 initialize() 方法。

于 2013-01-04T17:23:20.340 回答
0
android:onClick="startalexbutton"

这告诉您的程序在startalexbutton()按下时调用一个方法,并且该方法必须带有一个View参数(public void startalexbutton(View view))。

这个方法会在你的MainActivity课堂上使用;但是,由于您已经使用setOnClickListener()它,只需从您的 XML中删除。 android:onClick="startalexbutton"(您也可以删除android:onClick="startMainActivity"。)

PS:以后请把您的LogCat日志以文本格式;然后它们 A) 出现在搜索结果中并且 B) 更容易阅读。

于 2013-01-04T17:21:39.657 回答
0

您没有调用Activity来initialize()初始化Button onCreateActivityAlexMainActivity

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

          initialize() ;//<<<<initialize here
    }

并从 xml 中的两个按钮中删除 onClick 属性为

在 activity_main.xml :

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="26dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/button1"
       />

在 activityalex.xml 中:

 <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="26dp"
        android:layout_marginRight="20dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/button2"
         />

笔记 :

当您setOnClickListener在 java 代码中添加任何 View 时,不需要android:onClick 使用 View xml添加

于 2013-01-04T17:21:51.547 回答