不幸的是app停止工作

时间:2015-08-09 12:52:15

标签: java android

当我按下我的应用程序中的“开始活动”按钮时,它将无法正常工作并被迫停止工作。

这是第一个xml文件(get.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/etget"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Enter Your Gender" />

<Button
    android:id="@+id/bget1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@id/etget"
    android:text="Start Activity" />

<Button
    android:id="@+id/bget2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/etget"
    android:layout_toLeftOf="@id/bget1"
    android:text="Start Activity for Result " />

<TextView
    android:id="@+id/tvget"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/bget2"
    android:text="TextView" />

</RelativeLayout>

这是java文件,Get.java:

package example.katta;

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

public class Get extends Activity implements OnClickListener {
Button bg1, bg2;
TextView tv;
TextView etg;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.get);
    etg = (TextView) findViewById(R.id.etget);
    bg1 = (Button) findViewById(R.id.bget1);
    bg2 = (Button) findViewById(R.id.bget2);
    tv = (TextView) findViewById(R.id.tvget);
    bg1.setOnClickListener(this);
    bg2.setOnClickListener(this);
}

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    switch (arg0.getId()) {
    case R.id.bget1:
        String bread = etg.getText().toString();
        Bundle basket = new Bundle();
        basket.putString("key", bread);
        Intent a = new Intent(Get.this, Send.class);
        a.putExtras(basket);
        startActivity(a);
        break;
    case R.id.bget2:

        break;
    }
}

}

这是第二个xml文件(send.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/etsend"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</TextView>

<RadioGroup
    android:id="@+id/rgsend"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <RadioButton
        android:id="@+id/rb1send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Male" />

    <RadioButton
        android:id="@+id/rb2send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Female" />
</RadioGroup>

<TextView
    android:id="@+id/tvsend"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

<Button
    android:id="@+id/buttonsend"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Submit" />

</LinearLayout>

这是java文件(Send.java):

package example.katta;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class Send extends Activity implements OnClickListener, OnCheckedChangeListener {

Button bts;
TextView tvs,ets;
RadioGroup selection;
String gotbread;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.send);
    Initialize();
    Bundle gotbasket = getIntent().getExtras();
    gotbread = gotbasket.getString("key");
    tvs.setText(gotbread);
}

private void Initialize() {
    // TODO Auto-generated method stub
    ets = (TextView) findViewById(R.id.etsend);
    bts = (Button) findViewById(R.id.buttonsend);
    tvs = (TextView) findViewById(R.id.tvsend);
    selection = (RadioGroup) findViewById(R.id.rgsend);
    bts.setOnClickListener(this);
    selection.setOnCheckedChangeListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

}

public void onCheckedChanged(RadioGroup arg0, int arg1) {
    // TODO Auto-generated method stub
    switch (arg1) {
    case R.id.rb1send:

        break;
    case R.id.rb2send:

        break;
    }

}

}

2 个答案:

答案 0 :(得分:0)

错误是:

android.content.ActivityNotFoundException: Unable to find explicit activity class {example.katta/example.katta.Send}; have you declared this activity in your AndroidManifest.xml?

解决方案是在Send中添加AndroidManifest.xml活动:

    <activity
        android:name=".Send" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

答案 1 :(得分:0)

您应该在清单中声明每个活动,我认为您可以创建更好的代码。

我会给你一些建议来帮助你。

1-您可以明确命名他们的观点。

<TextView
android:id="@+id/txt_view_send"
... >
</TextView>

2-使用camelNotation java代码

Bundle gotBasket ...

未来的大型项目非常有帮助!

3-使用match_parent un your views

FILL_PARENT(在API级别8及更高级别中重命名为MATCH_PARENT),这意味着该视图希望与其父级一样大。

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

4- Bundle仅在您有许多参数时使用。你可以在你的例子中做这样的事情。

//你可以添加一个变量来获取editText值或直接将值传递给putExtras()

String bread =  etg.getText().toString();
Intent a = new Intent(Get.this, Send.class);
a.putExtras("key", bread);
startActivity(a);

http://developer.android.com/reference/android/content/Intent.html

4-validating可以帮助避免异常。

 //example 

if(getIntent().getExtras() != null){
     tvs.setText(getIntent().getExtras().getString("key"));
 }



//your example 
Bundle gotbasket = getIntent().getExtras();
if(gotbasket != null){
   gotbread = gotbasket.getString("key");
if(gotbread != null{
   tvs.setText(gotbread);
}

它可以产生NullPointerException。

我希望它可以帮到你!!

干杯

编程继续!