2017-04-08 75 views
0

我想在Android Studio 1.5中製作一個測驗應用程序,而我的標題屏幕「開始」按鈕不起作用。
它應該從MainActivity引導到第二個名爲questionone的Activity。一個不起作用的按鈕

這裏是從佈局的按鈕:

<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

有你設置的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?待辦事項按鈕?還有什麼錯誤,你會得到什麼?顯示堆棧跟蹤。 – HaroldSer

+0

你是指其他按鈕的xml是什麼意思? –

0

您的按鈕將更新呼叫「buttonBegin(View v)」,因爲在他的XML中,您在onClick屬性中設置了「toDo(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(View v){// code}中的代碼將會運行。

1

你的問題是你已經把android:onClick="toDo"兩次,所以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

試試這個

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

在你MainActivity,我建議實施一個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