2015-03-30 192 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