0

私はこのアンドロイドのものにはかなり慣れていませんが、ボタンを押すと特定の URL に移動できる (最適化されたバージョンの Web サイトに移動する) 小さなアプリを構築しています。しかし、問題が発生しました。アプリケーションは 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" />

これがコードで、なぜそのポップアップ ボックスが表示されるのか不思議に思っています。コード自体に論理エラーは見られません。

PS URL を変更したので、実際の場所はわかりません。プロジェクトは非常に静かです;)ボタンをクリックするとポップアップ エラー メッセージが表示される

4

2 に答える 2

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" />

于 2012-07-19T11:52:05.357 に答える