我正在尝试在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文件中的代码:
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);
}
public void buttonBegin (View view){
Intent intent = new Intent (this, question.class);
startActivity(intent);
}
public void toDo(View v) {
if (v.equals(buttonExit)) {
Toast.makeText(getApplicationContext(), "Why would you want to exit such a great app?", Toast.LENGTH_LONG).show();
}
}
}
这也是我的Android Manifest文件:
<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 :(得分:1)
您的问题是您已将android:onClick="toDo"
放两次,因此永远不会使用buttonBegin
。
作为替代方案,我会在您从XML
中删除任何android:onClick
后推荐这个
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;
}
}
}
此外,根据活动名称&#34; questionone&#34;,我强烈建议您避免考虑每个问题需要一个新活动。
您只需要一个通用活动来显示任何问题。
答案 1 :(得分:1)
在public class Temp {
static int i;
int j;
int sum = i+j;
}
public class Main{
public static void main(String[] args){
Temp obj = new Temp();
obj.i = 1;
obj.j = 2;
System.out.println(obj.sum); //returns '0'
}}
中,我建议您实施MainActivity
...
OnClickListener
答案 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" />
答案 3 :(得分:0)
您的按钮会更新通话&#34; buttonBegin(查看v)&#34;因为在他的XML中你设置&#34; toDo(View v)&#34;在onClick属性。
所以你应该看起来像这样:
<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}内的代码将会运行。
答案 4 :(得分:-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
}
});
}
}