2013-01-04 76 views
0

好了,我工作的一個應用程序,這將做到以下幾點:卡住爲什麼我的android應用程序不會工作?

  1. 允許用戶第一「山姆」在EDITTEXT字段中鍵入他/她的消息。
  2. 按下屏幕底部的「Alex」按鈕開始新的活動ActivityAlex
  3. 允許用戶「Alex」編輯editText字段。
  4. 按屏幕底部的「薩姆」按鈕,重新啓動活動MainActivity

到目前爲止,我覺得我有大部分的工作做,但我被陷,就如何解決程序所以它會做我想做的事情。

這裏是我的logcat

這裏是我的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); 

     } 
    }); 
    } 
} 

這裏是我的ActivityAlex:

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佈局文件: activity_main:

<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> 

activityalex.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> 

提前感謝!

+0

任何錯誤或異常? –

+0

而不是代碼轉儲,足夠的[SSCE](http://sscce.org/)就足夠了:) [你試過了什麼?](http://whathaveyoutried.com)... – t0mm13b

回答

0
android:onClick="startalexbutton" 

這告訴你的程序調用時,它被壓的方法startalexbutton(),這種方法必須採取View參數(public void startalexbutton(View view))。

這個方法會在你的MainActivity類中去;但是,由於您已經使用了setOnClickListener(),因此只需從您的XML中刪除android:onClick="startalexbutton"即可。 (您也可以刪除android:onClick="startMainActivity"。)

PS:未來,請將您的LogCat日誌以文本格式;那麼他們A)出現在搜索結果中,B)更容易閱讀。

0

你是不是調用的ActivityAlexonCreateinitialize()MainActivity活動初始化按鈕

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

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

和刪除的onClick從兩個按鈕,在XML屬性爲

在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" 
     /> 

注:

當你在Java代碼中的任何視圖添加setOnClickListener則不需要添加與View XML

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()方法。

相關問題