2017-04-08 12 views
0

Android Studio 1.5でクイズアプリを作成しようとしていて、タイトル画面の「開始」ボタンが機能しません。
MainActivityからquestiononeという名前の2番目のアクティビティにつながるはずです。ここでボタンが動作しない

はレイアウトからボタンです:ここでは

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Begin" 
    android:id="@+id/begin" 
    android:layout_marginTop="45dp" 
    android:layout_below="@+id/textView" 
    android:layout_alignRight="@+id/textView" 
    android:layout_alignEnd="@+id/textView" 
    android:clickable="true" 
    android:background="#ffffff" 
    android:onClick="toDo" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Exit" 
    android:id="@+id/exit" 
    android:layout_marginTop="27dp" 
    android:layout_below="@+id/begin" 
    android:layout_alignLeft="@+id/begin" 
    android:layout_alignStart="@+id/begin" 
    android:clickable="true" 
    android:onClick="toDo" 
    android:background="#ffffff" /> 

は私のMainActivity Javaファイルからコードです:ここでは

​​

も私のAndroidのマニフェストファイルです:

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

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

</manifest> 
+0

あなたは「AndroidのメーカーのonClick – stinepike

+0

を設定しています1.5インチ?なぜあなたは少なくとも2.2にアップグレードしていないのですか? –

答えて

0

Button xmlが間違っている場合、以下のように変更してください:(onClickフィールドがtoDoからbuttonBeginに変更されました)

<Button 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Begin" 
android:id="@+id/begin" 
android:layout_marginTop="45dp" 
android:layout_below="@+id/textView" 
android:layout_alignRight="@+id/textView" 
android:layout_alignEnd="@+id/textView" 
android:clickable="true" 
android:background="#ffffff" 
android:onClick="buttonBegin" /> 
+0

私はそれをやってみたが、私のアプリはちょうどクラッシュする –

+0

他のボタンのXMLは何ですか? toDoボタン?また、どのようなエラーがありますか? show stacktrace。 – HaroldSer

+0

他のボタンのxmlはどういう意味ですか? –

0

あなたのボタンでは、XMLではonClick属性に "toDo(View v)"が設定されているため、buttonBegin(View v)を呼び出すようになりました。

だから、それはこのように見えるようにする必要があります

<Button 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Begin" 
android:id="@+id/begin" 
android:layout_marginTop="45dp" 
android:layout_below="@+id/textView" 
android:layout_alignRight="@+id/textView" 
android:layout_alignEnd="@+id/textView" 
android:clickable="true" 
android:background="#ffffff" 
android:onClick="buttonBegin" /> 

しかし、より良く、よりクリーンなアイデアは、あなたのボタンをonClickListener設定されて欲しいものを達成するために。このような何か:

buttonBegin.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent (this, question.class); 
      startActivity(intent); 
     } 
    }); 

あなたユーザーがボタンをクリックした場合、その後のonClick(ビューV){//コード}内のコードが実行されます。

1

android:onClick="toDo"を2度入力したので、buttonBeginは使用されません。代替案として


あなたはまた、XML

public class MainActivity extends AppCompatActivity 
    implements View.OnClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     findViewById(R.id.begin).setOnClickListener(this); 
     findViewById(R.id.exit).setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.begin: 
       // handle begin 
       break; 
      case R.id.exit: 
       // handle exit 
       break; 
     } 
    } 
} 

から任意のを削除した後、私は、アクティビティ名「questionone」に基づいて、私はあなたが避ける強く示唆し、これをお勧めします1つの質問につき1つの新しいアクティビティが必要であるという考え。

あなただけのどんな質問を表示する1つの汎用活動を必要としています。

-1

があなたのMainActivityでこの

XML 
<Button 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Begin" 
android:id="@+id/begin" 
android:layout_marginTop="45dp" 
android:layout_below="@+id/textView" 
android:layout_alignRight="@+id/textView" 
android:layout_alignEnd="@+id/textView" 
android:clickable="true" 
android:background="#ffffff" 
/> 



<Button 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Exit" 
android:id="@+id/exit" 
android:layout_marginTop="27dp" 
android:layout_below="@+id/begin" 
android:layout_alignLeft="@+id/begin" 
android:layout_alignStart="@+id/begin" 
android:clickable="true" 
android:background="#ffffff" /> 

とJava

package com.example.noot_a_normal_pc.kmtomiles; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import static android.widget.Toast.makeText; 

public class MainActivity extends AppCompatActivity { 

Button buttonBegin, buttonExit; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    buttonBegin = (Button) findViewById(R.id.begin); 
    buttonExit = (Button) findViewById(R.id.exit); 
} 


buttonBegin.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     //do here what you want to do 
     } 
    }); 

buttonExit.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
      //do here what you want to do 
     } 
    }); 
} 
} 
1

を試してみて、私はOnClickListenerを実装推薦する...

package com.example.noot_a_normal_pc.kmtomiles; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import static android.widget.Toast.makeText; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    Button buttonBegin, buttonExit; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     buttonBegin = (Button) findViewById(R.id.begin); 
     buttonBegin.setOnClickListener(this); 
     buttonExit = (Button) findViewById(R.id.exit); 
     buttonExit.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     if (v.equals(buttonExit)) { 
      Toast.makeText(getApplicationContext(), "Why would you want to exit such a great app?", Toast.LENGTH_LONG).show(); 
     } 
     else if (v.equals(buttonBegin)) { 
      //run your app! 
     } 
    } 

} 
+0

基本的には既存の回答と同じです。 http://stackoverflow.com/a/43301289/2308683 –

+0

あなたは正しいです...申し訳ありませんが、私は他の投稿を見ませんでした。 – Eragon20

関連する問題