【菜鸟求助】Eclipse中,两个Activity,用其中一个Activity03调用另一个ResultActivity运行时提示**has stopped。请各位大神不吝赐教!

Honour_Lee 发布于 2016/05/30 19:54
阅读 530
收藏 0

【新人求助】:一下是报错和源代码,请大神指出错误                                                       orz333

————————————————Activity03:————————————————

package com.example.activity03;



import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


//1、 在Activity03中什声明四个控件:2个EditText(数字输入框),1个TextView(乘以),1个Button(计算)。-->修改activity03_layout。xml文件
//2、要为其中的两个控件(1个TextView(乘以)、1个Button(计算))设置显示的值
//3、创建一个监听器类,用来监听按钮按下的动作
//4、将监听器类的对象绑定在按钮对象上




public class Activity03 extends Activity {
//1)在cativity03_layout.xml中声明好了四个控件过后,
//2)在Activity中将这四个控件取出来:-->声明代表这四个控件的对象-->用findViewById()方法取出控件
private EditText factorone;
private EditText factortwo;
private TextView symbol;
private Button calculate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity03_layout);
//3)根据控件的ID来取得代表控件的对象-->findViewById(R.id.**)
        factorone=(EditText)findViewById(R.id.factorone);
        factortwo=(EditText)findViewById(R.id.factortwo);
        symbol=(TextView)findViewById(R.id.symbol);
        calculate=(Button)findViewById(R.id.calculate);
//4)为symbol和calculate设置显示的值
   //方法一:直接写入字符串“乘以”/“计算”。有点:简单方便;缺点:考虑到范围可能会有多种语言,直接赋值的方式,修改起来非常麻烦
        //symbol.setText("乘以");
        //calculate.setText("计算");
   // 方法二:1)在string中配置字符串,然后由Activity03调用----推荐!
        //()内不再是字符串,而是对应的Id.优点:应用程序中并无相应的值,只有其Id,真正的值在strings.xml中,如需修改,只需要在strings.xml中修改
        symbol.setText(R.string.symbol);
        calculate.setText(R.string.calculate);
//11)将监听器对象绑定到按钮(calculate)对象上面去
        calculate.setOnClickListener(new CalculateListener());
        
    }
//5)编写应用程序的监听器(内部类,比较常见的,eg:在多线程程序中使用内部类来隐藏run函数;在编写模板回调模式时使用匿名内部类作为回调接口的实现)
    //1、在内部类中,可以直接使用外部类的成员变量,但不能拥有;2、可以再内部类中使用外部类的成员函数/对象
    //如果对Listener不太了解,可以Google“Observer设计模式”-->有助于了解Listener
    class CalculateListener implements OnClickListener{


@Override
public void onClick(View v) {
//6)取得两个EditText控件的值
String factoroneStr = factorone.getText().toString();
String factortwoStr = factortwo.getText().toString();
//7)将这两个值存放到Intent对象当中
Intent intent = new Intent();
//8)调用intent。put()方法将键值对传进intent中去
intent.putExtra("one",factoroneStr);
intent.putExtra("two",factortwoStr);
//9)设置intent启动哪一个Activity
intent.setClass(Activity03.this, ResultActivity.class); 
//10)使用这个Intent对象来启动ResultActivity-->调用现在的Activity的startActivity()方法,以启动跳转
Activity03.this.startActivity(intent);
}
     
    }
}


——————————activity03_layout.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.activity03.Activity03" >
<EditText 
    android:id="@+id/factorone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />


 <TextView
    android:id="@+id/symbol"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    />
    
 <Editext
    android:id="@+id/factortwo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />
    
<Button
    android:id="@+id/calculate"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />


</RelativeLayout>



——————————————ResultActivity:————————————————

package com.example.activity03;


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


//接收从Activity03中所传入的值
//计算两个值得乘积
//将计算结果显示在Activity上-->要想显示,最少应该有一个TextView控件用来显示-->要在ResultActivity的布局文件当中配置一个TestView
//------以下步骤基本和Activity03类似------
//12)在result。xml中配置一个TextView
public class ResultActivity extends Activity{
//13)声明TextView控件的对象
private TextView resultView;
//14)导入OnCreate()方法的复写文件
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//15)使该Activity使用result。xml的布局
setContentView(R.layout.result);
//16)根据控件的Id来得到控件对象
resultView= (TextView)findViewById(R.id.result);
//得到intent对象中的值
//1、先得到intent对象
Intent intent = getIntent();
//2、把Activity03中传入的键再传入intent。getStringExtra()方法中,以通过键得到值
String factoroneStr = intent.getStringExtra("one");
String factortwoStr = intent.getStringExtra("two");
//17)通过键得出的值都是String类型,无法相乘,所以还得转化成整型-->用Integer。parseInt()方法抽取一下
int factoroneInt = Integer.parseInt(factoroneStr);
int factortwoInt = Integer.parseInt(factortwoStr);
//18)计算两个值得乘积
int result = factoroneInt * factortwoInt;
//19)在result的TextView中(resultView中)将结果显示出来(注意:setText()的输出结果为String类型,所以要把结果转化为字符串类型,其方法为:根据Java语法:连接符两端有一端是字符串,另外一段也将会是字符串,然后显示,所以相乘结果也是String类型)
resultView.setText(result + "");
}
}


——————————————————result.xml:————————————————

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
/>
</LinearLayout>


——————————————————stings.xml————————————————

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


    <string name="app_name">Activity03</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="symbol">乘以</string>
    <string name="calculate">计算</string>


</resources>


————————————————AndroidManirest.xml——————————————

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


    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Activity03"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


</manifest>



加载中
0
放开那只肥鸡
放开那只肥鸡
ResultActivity没有在清单文件中注册
0
放开那只肥鸡
放开那只肥鸡
  <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=".ResultActivity"
            android:label="@string/title_activity_result" >
        </activity>

    </application>

四大组件都必须注册

Honour_Lee
Honour_Lee
我重新写了一遍,结果还是报错闪退。。。
0
放开那只肥鸡
放开那只肥鸡
我写一个给你!
0
百世经纶之傲笑红尘
百世经纶之傲笑红尘
买本Android入门的参考book,不然这样的错误你以后只会更多
0
放开那只肥鸡
放开那只肥鸡
package com.example.test;


import android.app.Activity;
import android.content.Intent;


import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {


    private EditText edt1;
    private EditText edt2;
    private TextView result;
    private Button button;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edt1=(EditText) findViewById(R.id.edt1);
        edt2=(EditText) findViewById(R.id.edt2);
        result=(TextView) findViewById(R.id.result);
        button=(Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {


public void onClick(View v) {
// 点击按钮进行意图,发送用户输入的2个数字,进入ResultActivity
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
int intOne = Integer.parseInt(edt1.getText().toString());
int ontTwo = Integer.parseInt(edt2.getText().toString());
intent.putExtra("intOne", intOne);
intent.putExtra("intTwo", ontTwo);
System.out.println(intOne+ontTwo+"");
startActivityForResult(intent, 5);
}
});
        
    }
//    拿到返回的数据并显示
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (5==requestCode) {
int resultint = data.getIntExtra("result", 0);
System.out.println(resultint+"");
result.setText(String.valueOf(resultint));
}
    }
}
0
放开那只肥鸡
放开那只肥鸡
package com.example.test;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;


public class ResultActivity extends Activity {



protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);

}
public void forBackResult(View v){
Intent data1 = getIntent();
// 拿到传过来的2个数字
int edt1 = data1.getIntExtra("intOne", 0);
int edt2 = data1.getIntExtra("intTwo", 0);
System.out.println(edt1+edt2+"");
// 进行乘法运算
int resultInt=edt1*edt2;
System.out.println(resultInt+"");
// 通过意图返回计算结果
Intent data = new Intent();
data.putExtra("result", resultInt);
setResult(RESULT_OK, data);
finish();
}
}

0
放开那只肥鸡
放开那只肥鸡
xml文件需要不需要? result这个activity需要注册。或者你创建的时候new 对应的包,选择other再选择android activity创建activity,这样就会自动注册了。
Honour_Lee
Honour_Lee
额(⊙﹏⊙)b,还是不知道怎样自动注册。。。
返回顶部
顶部