我是Android新手,问题很简单,但我不能放置它。我试着查看logcat,但我无法跟进。
这是主要活动加载得很好。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Intent intent;
Button newsButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void sendMessage(View view) {
Intent intent = new Intent(this, NewsActivity.class);
startActivity(intent);
}
}
这是相应的xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:orientation="vertical" >
<Button
android:id="@+id/newsButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="104dp"
android:onClick="@layout/news_activity"
android:text="News" />
<Button
android:id="@+id/contactButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Contact Us"
android:onClick="@layout/contact_activity" />
<Button
android:id="@+id/findUs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Social Media"
android:onClick="@layout/social_activity" />
<Button
android:id="@+id/fundButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fundraising" />
</LinearLayout>
<TextView
android:id="@+id/titleName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="Send the Scots to Scotland"
android:textSize="24sp" />
</RelativeLayout>
崩溃发生在我调试的API 14设备上。点击我的任何一个按钮后,切换到如下所示的新活动:(这些活动基本上与下面的活动相同)
package com.gconcode.scotstoscotland;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.Menu;
import android.view.MenuItem;
public class NewsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news_activity);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.news, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// This ID represents the Home or Up button. In the case of this
// activity, the Up button is shown. Use NavUtils to allow users
// to navigate up one level in the application structure. For
// more details, see the Navigation pattern on Android Design:
//
// http://developer.android.com/design/patterns/navigation.html#up- vs-back
//
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
抱歉,我删除了logcat,我不确定我是否正确发布了。由于帮助,我也不想让帖子变得不方便!
答案 0 :(得分:1)
我认为你误解了android:onClick
。当您单击layout
时,您似乎希望它加载某个Button
文件,但这不是它的工作原理。您提供的名称android:onClick
应该是一个函数的名称,该函数不返回任何内容并接受View
作为其唯一参数。看起来你从
public void sendMessage(View view) {
Intent intent = new Intent(this, NewsActivity.class);
startActivity(intent);
}
有不同的方法可以做到这一点。由于您已经拥有android:onClick
并且Activity
中有方法,因此可以将其更改为
android:onClick="sendMessage"
然后在该方法中添加switch
语句以打开正确的Activity
。像
public void sendMessage(View view)
{
switch (view.getId()) // get the id of the View clicked
{
case (R.id.newsButton):
Intent intent = new Intent(this, NewsActivity.class);
startActivity(intent);
break;
case (R.id.contactButton):
// assuming ContactActivity.java is an Activity name
Intent intent = new Intent(view.getContext(), ContactActivity.class);
startActivity(intent);
break;
...
}
}
This answer显示了执行Intent
的一种不同方式,因此您可以减少一些可重用的代码。如果它看起来太复杂,那么在你有更好的理解但只是一个想法之前不要担心它。