我正在尝试向一个活动添加一个操作栏,该活动是从片段内的ImageButton中调出来的。我添加了代码,但点击图片按钮后我的app力就会关闭。
abcd.java
package hind.jai.com.jaihind;
import android.app.Activity;
import android.os.Bundle;
import android.app.ActionBar;
/**
* Created by Rishik on 14-06-2015.
*/
public class abcd extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.abcd);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
android manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hind.jai.com.jaihind" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- <activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> -->
<activity
android:name=".splash"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
></activity>
<activity
android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
android:name=".abcd" ></activity>
</application>
</manifest>
abcd.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView9"
android:layout_gravity="center_vertical" />
</LinearLayout>
about.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/about"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:background="@drawable/image2"
android:onClick="Onclick"
android:layout_gravity="center_horizontal" />
</LinearLayout>
about.java
package hind.jai.com.jaihind;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
/**
* Created by sukhvir on 17/04/2015.
*/
public class about extends android.support.v4.app.Fragment {
ImageButton Img;
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(
R.layout.about, container, false);
}
@Override
public void onActivityCreated( Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//get the button view
Img = (ImageButton) getView().findViewById(R.id.imageButton);
//set a onclick listener for when the button gets clicked
Img.setOnClickListener(new View.OnClickListener() {
//Start new list activity
public void onClick(View v) {
Intent Intent = new Intent(getActivity(), abcd.class);
startActivity(Intent);
}
});
}
}
这个“关于”是我通过图像按钮开始活动“abcd”的片段。
答案 0 :(得分:0)
尝试使用getSupportActionBar()而不是getActionBar()方法。
试试此代码
package hind.jai.com.jaihind;
import android.app.Activity;
import android.os.Bundle;
import android.app.ActionBar;
import android.support.v7.app.ActionBarActivity
/**
* Created by Rishik on 14-06-2015.
*/
public class abcd extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.abcd);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
希望有所帮助
答案 1 :(得分:0)
您可以通过在片段内的任何位置执行getActivity()
来访问片段中的所有活动方法。
因此,要访问操作栏,请执行
getActivity().getActionBar();
或者,如果您使用的是较新的appcompat活动和工具栏,
((AppCompatActivity)getActivity()).getSupportActionBar();
你的问题不明确,但希望这就是你要找的。 p>
答案 2 :(得分:0)
如果你可以分享你的堆栈跟踪,那将真正有助于确定究竟是什么导致了问题。
尽管如此,我认为你得到 NullPointerException 异常,因为 getActionBar()在你的情况下返回null,因为你将活动主题设置为
Theme.AppCompat.Light.DarkActionBar
对应支持库。
尝试从 AppCompatActivity 扩展您的活动,然后使用getSupportActionBar()方法获取操作栏。
您还应该将操作栏从导入 android.app.ActionBar 更改为 android.support.v7.app.ActionBar 。
代码:
package hind.jai.com.jaihind;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
/**
* Created by Rishik on 14-06-2015.
*/
public class abcd extends AppCompatActivity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.abcd);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}