当我按下我的应用程序中的“开始活动”按钮时,它将无法正常工作并被迫停止工作。
这是第一个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;
}
}
}
答案 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。
我希望它可以帮到你!!
干杯