2

Android デバイス 4.0.1 でアプリケーションをビルドしようとしてActionBarいますが、NullPointException. 次の解決策を試しました。

  1. Theme.Holo.Lightアプリケーションのテーマにテーマを追加します。
  2. OnCreateActivity の前にActionBarfeature をsetContentViewとして設定しますrequestWindowFeature(Window.FEATURE_ACTION_BAR)
  3. 使用SherlockActivityされ、呼び出されたgetSupportActionBar()

しかし、運がありません。すべての方法で、取得してnull ActionBarいます。誰でも何が問題なのか教えてください。私はここに貼り付けActivityAndroidManifest.xmlいます。

AndroidManifest.xml

<code>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tzoomers.birthdaysdiary"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.Light">
        <activity
            android:name="com.tzoomers.birthdaysdiary.BirthdaysDiary"
            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=".ContentActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".SyncActivity">
        </activity>
    </application>

</manifest>

</code>

SyncActivity.java

<code>    
public class SyncActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

        setContentView(R.layout.layout_sync_activity);

        ActionBar actionBar = getActionBar();
        if(actionBar != null)
        {
            getActionBar().setDisplayHomeAsUpEnabled(false);
        }
        else
        {
            Toast.makeText(this, "Action bar is null", Toast.LENGTH_SHORT).show();
        }
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        return super.onOptionsItemSelected(item);
    }
}

指摘するのではなく、正確な問題を教えてくださいurls。私はすべての解決策を試しました。XMLまたはJAVAファイルに何か不足している場合は、それを指摘してください。

前もって感謝します。

4

1 に答える 1

1

私はこの問題を自分で解決しました.新しいアップデートは少しトリッキーで、古い修正のいくつかはもううまくいきません. これを試して:

  1. MainActivityJava コードを拡張するように設定するActionBarActivity

  2. 呼び出しを使用getSupportAcionBar();してアクション バーを取得します

  3. (カスタム) TabListener が android.support.v7.app.ActionBar.TabListener を拡張していることを確認してください

  4. FragmentManager を使用して、タブが選択されている場合と選択されていない場合にタブフラグメントを追加および削除できます。

説明に役立つコードスニペットの一部を次に示します。あなたにも役立つことを願っています:)

public class MainActivity extends ActionBarActivity 
{

@Override
protected void onCreate(Bundle savedInstanceState) //Overrode Default Constructor
{
    super.onCreate(savedInstanceState);
    android.support.v7.app.ActionBar tabsActionBar = getSupportActionBar();
   /***following changes ActionBar to a Tabbed ActionBar***/
    tabsActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);`  

    android.support.v7.app.ActionBar.Tab tabArray = tabsActionBar.newTab();to later contain 'inflated' digitalClock (tabbed) UI
    tabArray.setText(R.string.tab_one);
    /***following sets clockTabListener private class as Listener for
     * this object***/
    tabArray.setTabListener( new clockTabListener( this, digitalClockFragment.class.getName() ) );//actual call to digitalClockFragment
    tabsActionBar.addTab(tabArray);//adds TabArray to Action Bar Tab(s)
    /******Second call for setting New Tab to AnalogClockFragment******/
    tabArray = tabsActionBar.newTab();
    tabArray.setText(R.string.tab_two);
    tabArray.setTabListener( new clockTabListener( this, analogClockFragment.class.getName() ) );//actual call to analogClockFragment
    tabsActionBar.addTab(tabArray);


private class clockTabListener implements android.support.v7.app.ActionBar.TabListener
{

    private final Activity currentActivity;
    private final String currentFragment;
    private Fragment launchFragment;
    private android.app.FragmentManager frgManager;
    public clockTabListener(Activity activityName, String fragmentName)
    {
    currentActivity = activityName;
    currentFragment = fragmentName;
    frgManager = getFragmentManager();
    }

    /******************************************************************/
    /******************************************************************/
    /******************************************************************/
    @Override
    public void onTabSelected(android.support.v7.app.ActionBar.Tab arg0,
            android.support.v4.app.FragmentTransaction arg1) 
    {
        launchFragment = Fragment.instantiate(currentActivity, currentFragment);
        frgManager.beginTransaction().replace(android.R.id.content, launchFragment).commit();
    }
于 2014-12-24T21:30:06.330 に答える