2015-03-30 201 views
-3

我不太確定爲什麼我的應用程序不能啓動,我沒有錯誤,我不知道發生了什麼事情?我對android非常陌生,這只是一個基本的計算器,但每次啓動時都會崩潰。我的應用程序無法啓動?

***************主要Activity.java **********************

package com.example.alex.myapplication; 


     import android.support.v7.app.ActionBarActivity; 
     import android.os.Bundle; 
     import android.view.Menu; 
     import android.view.MenuItem; 



public class MainActivity extends ActionBarActivity { 

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

    new Something(this); 

} 





@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
    } 
    } 

******************* Something.java ******************

package com.example.alex.myapplication; 


    import android.app.Activity; 
    import android.view.View; 
    import android.widget.EditText; 
    import android.widget.Button; 




    public class Something extends Activity { 


    private Button add,subtract,multiply,devide; 
    private EditText editA, editB, editC; 
    private double doubleA,doubleB,doubleC; 

     public Something(Activity a) { 

      click(); 


     } 


     public void click(){ 
      editA = (EditText) findViewById(R.id.editText); 
      editB = (EditText) findViewById(R.id.editText2); 
      editC = (EditText) findViewById(R.id.editText3); 
      doubleA =Double.parseDouble(editA.getText().toString()); 
      doubleB =Double.parseDouble(editB.getText().toString()); 


       add = (Button) findViewById(R.id.add); 
       subtract = (Button) findViewById(R.id.subtract); 
       multiply = (Button) findViewById(R.id.multiply); 
       devide = (Button) findViewById(R.id.devide); 

       add.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

        doubleC = doubleA+doubleB; 
        String s = "" + doubleC; 
         editC.setText(s); 


        } 
       }); 

       subtract.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        doubleC = doubleA-doubleB; 
        String s = "" + doubleC; 
        editC.setText(s); 


       } 
      }); 

       multiply.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        doubleC = doubleA*doubleB; 
        String s = "" + doubleC; 
        editC.setText(s); 


       } 
      }); 



      devide.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        doubleC = doubleA/doubleB; 
        String s = "" + doubleC; 
        editC.setText(s); 


       } 
      }); 



     } 



    } 

* ***************** activity_main.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" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 
     > 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/idk" 
    android:textSize="17sp" 
    android:id="@+id/textView" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal" 
    android:ems="5" 
    android:id="@+id/editText" 
    android:hint="First number" 
    android:layout_centerVertical="true" 
    android:layout_alignLeft="@+id/textView" 
    android:layout_alignStart="@+id/textView" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal" 
    android:ems="5" 
    android:id="@+id/editText2" 
    android:hint="Second number" 
    android:layout_centerVertical="true" 
    android:layout_alignRight="@+id/textView" 
    android:layout_alignEnd="@+id/textView" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Add" 
    android:id="@+id/add" 
    android:layout_alignParentBottom="true" 
    android:layout_alignLeft="@+id/editText" 
    android:layout_alignStart="@+id/editText" 
    android:layout_marginBottom="166dp" /> 

<Button 
    android:layout_width="100dp" 
    android:layout_height="50dp" 
    android:text="Subtract" 
    android:id="@+id/subtract" 
    android:layout_alignTop="@+id/multiply" 
    android:layout_alignLeft="@+id/add" 
    android:layout_alignStart="@+id/add" /> 

<Button 
    android:layout_width="100dp" 
    android:layout_height="50dp" 
    android:text="Multiply" 
    android:id="@+id/multiply" 
    android:layout_marginTop="58dp" 
    android:layout_below="@+id/devide" 
    android:layout_alignRight="@+id/devide" 
    android:layout_alignEnd="@+id/devide" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Devide" 
    android:id="@+id/devide" 
    android:layout_below="@+id/editText" 
    android:layout_alignLeft="@+id/editText2" 
    android:layout_alignStart="@+id/editText2" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="20" 
    android:id="@+id/editText3" 
    android:layout_below="@+id/textView" 
    android:hint="Results" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="62dp" /> 


      </RelativeLayout> 
+3

包含來自logcat的完整堆棧跟蹤來創建對象Activity。我們不會逐行和猜測地通過一個程序。 – 2015-03-30 18:51:20

回答

1

事實上,您創建了一個構造函數爲Something

public Something(Activity a) { 

     click(); 

} 

而不是使用onCreate()可能是錯誤的來源。

SomethingActivity導出,你起碼覆蓋onCreate(),並設置Activity在它的View。你沒有這樣做,而是你創建了Something的構造函數,這也是不允許的。

解決您的問題的方法是用onCreate()替換構造函數,並使用setContentView()設置該ActivityView。另外,您不能使用

new Something(this); 
+0

我給了你一個投票。哦,我不想做一個新的「活動」,我想要做的就是使用「Something.java」來處理「onClick」方法,以便計算數字。你知道像「MainActivity」是「活動」和「Something.java」處理事件。我不知道爲什麼它不能在這裏工作,因爲它在java中工作正常。 – user4601488 2015-03-31 13:39:15

+0

我相信你正在尋找一個['OnClickListener'](http://developer.android.com/reference/android/view/View.OnClickListener.html)來設置一個'Button'或'ListView'。 – 2015-03-31 13:56:02

+0

是的,我做了所有這些,但是你知道在java中如何爲「Gui」分開類,然後是處理其他東西的其他類。那麼我該如何做到這一點在Android中,就像我的「MainActivity」是我的「Gui」,我的「Something.java」類處理「onClicksListeners」,爲什麼它不執行我的「onCreate」中的「Something.java」方法?我的意思是我做錯了,我真的很困惑。 – user4601488 2015-03-31 14:20:30