我对这个Android的东西相当新,但是我正在构建一个小应用程序,当你按下按钮时,你可以转到特定的URL(转到网站的优化版本)。然而,我遇到了一个问题。应用程序符合并加载到AVD上,但唯一提供任何响应的按钮是第一个,它产生的响应是弹出错误消息(不幸的是,MyApplication已停止。)并关闭应用程序。其他按钮不响应点击。请参阅下面的代码。
package wag.cymal.libraryportal.welshlibraries;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.graphics.*;
import android.graphics.drawable.Drawable;
/**
* Main Activity will deal with all possible functionality
* @author Daniel Drave
*
*/
@SuppressWarnings("unused")
public class MainActivity extends Activity implements OnClickListener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button libButton1 = (Button) findViewById(R.id.button1); //giving buttons onClickListener will track for user touches
libButton1.setOnClickListener(this);
Button libButton2 = (Button) findViewById(R.id.button2); // ""
libButton2.setOnClickListener(this);
Button libButton3 = (Button) findViewById(R.id.button3); // ""
libButton3.setOnClickListener(this);
Button libButton4 = (Button) findViewById(R.id.button4); // ""
libButton4.setOnClickListener(this);
Button libButton5 = (Button) findViewById(R.id.button5); // ""
libButton5.setOnClickListener(this);
}
/**
* onClick is a required method of OnClickListener and deals with the switch case statement governing what happens depending on
* what button you click.
*/
public void onClick(View v) {
switch (v.getId())
{
case R.id.button1: method1();
break;
case R.id.button2: method2();
break;
case R.id.button3: method3();
break;
case R.id.button4: method4();
break;
case R.id.button5: method5();
break;
default: break;
}
}
/**
*
*/
public void method1() {
Uri uri = Uri.parse("http://.....");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
/**
*
*/
public void method2(){
Uri uri = Uri.parse("http://.....");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
/**
*
*/
public void method3(){
Uri uri = Uri.parse("http://....");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
/**
*
*/
public void method4(){
Uri uri = Uri.parse("http://.....");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
/**
*
*/
public void method5(){
Uri uri = Uri.parse("http://.....");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
这就是MainActivity.java类,下面是activity_main XML文件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/natlib"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginLeft="-8dp"
android:padding="@dimen/padding_medium"
android:text="@string/welsh_libs"
android:textColor="#79438F"
android:textSize="27dip"
android:textStyle="bold"
tools:context=".MainActivity" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@id/button1"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#A4C81C"
android:text="@string/ask_lib" />
<Button
android:id="@id/button2"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#FF0066"
android:text="@string/find_book" />
<Button
android:id="@id/button3"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#3F83F1"
android:text="@string/find_lib" />
<Button
android:id="@id/button4"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#FE0002"
android:text="@string/register" />
<Button
android:id="@id/button5"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="#FBFC3F"
android:text="@string/login" />
</LinearLayout>
<ImageView
android:id="@id/image1"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_marginBottom="5dp"
android:layout_marginLeft="165dp"
android:layout_weight="0.34"
android:contentDescription="@string/desc"
android:src="@drawable/waglogo"
android:visibility="visible" />
这就是代码,我只是想知道它为什么会生成弹出框。我在代码本身中看不到任何逻辑错误。
P.S。我修改了网址,因此您无法看到它们实际到达的位置。项目非常安静;)
答案 0 :(得分:0)
在声明新ID时,您需要在布局中使用“@ + id”:
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginLeft="-8dp"
android:padding="@dimen/padding_medium"
android:text="@string/welsh_libs"
android:textColor="#79438F"
android:textSize="27dip"
android:textStyle="bold"
tools:context=".MainActivity" />
<Button
android:id="@+id/button1"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#A4C81C"
android:text="@string/ask_lib" />
<Button
android:id="@+id/button2"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#FF0066"
android:text="@string/find_book" />
<Button
android:id="@+id/button3"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#3F83F1"
android:text="@string/find_lib" />
<Button
android:id="@+id/button4"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:background="#FE0002"
android:text="@string/register" />
<Button
android:id="@+id/button5"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="#FBFC3F"
android:text="@string/login" />
答案 1 :(得分:0)
我现在已经解决了这个问题。清理了项目,摆脱了一些相互冲突的进口,一切运转良好。谢谢大家的帮助!