2017-03-07 38 views
-1

我想使用android studio上的設置內容視圖在顯示真正的主要活動之前在屏幕上顯示歡迎消息。爲什麼我的應用崩潰時,我改變了它的佈局?

我只是複製了我認爲它負責我的應用程序崩潰的代碼部分,因爲如果我刪除了歡迎活動的一部分,我將不會出錯。

記住android studio在你運行它時不會顯示錯誤,程序會崩潰。 有沒有辦法讓它不會崩潰?

(任何建議,爲使其更好地爲佈局發生了較大變化,因爲我將要與他們activitys以後添加更多的佈局)

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_welcom); 
    Button btn = (Button) findViewById(R.id.button); 
    View.OnClickListener welcomeListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setContentView(R.layout.activity_main); 
     } 
    }; 
    btn.setOnClickListener(welcomeListener); 
    } 
+1

爲什麼要加載的setContentView(R.layout.activity_main)的onClick你想,如果加載另一個活動 – tahsinRupam

+0

安置自己的堆棧跟蹤 – Sony

+0

你?應用程序崩潰=>你必須得到一個錯誤日誌! –

回答

-1

我們做吧。如果任何其他人有同樣的問題使用此步驟: 我修改了代碼,一些事情是這樣的:

`

View.OnClickListener welcomeListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Intent intent = newIntent(YourCurrentActivity.this,MainActivity.class); 
     startActivity(intent); 
    } 
}; 
btn.setOnClickListener(welcomeListener); 
} 

` 然後我去Android清單,並在那裏添加我的Welcome類。 爲什麼?因爲在Android Studio中的日誌有,你沒有的類添加到Android的manifest.xml

`你的答案

<activity android:name=".WelcomeClass"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <meta-data 
     android:name="com.blog.software.app.WelcomeClass" 
     android:resource="@layout/activity_welcom"/> 
</activity> 

` 全部是有益的,並與他們的錯誤,我解決了這個問題。所以感謝每一個

3

你應該使用意圖,而不是使用的setContentView(R.layout.activity_main )上點擊

button.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
      Intent k = new Intent(Welcomactivity.this, MainActivity.class); 
      startActivity(k); 

       } 

      }); 
+0

你能告訴我一個例子嗎?我只是從java和android開始。 – Programmer

+0

@Programmer http://stackoverflow.com/questions/13194081/how-to-open-a-second-activity-on-click-of-button-in-android-app –

1

我建議你使用的片段:您的活動開始,表現出與歡迎信息和按鈕的第一個片段,用戶點擊該按鈕,然後更換了第一個分片(不將其加入你的後臺將不會回到它當back被挖掘)與第二個!看看here

0

這只是它不工作的方式。您可以用歡迎信息顯示對話框,也可以使用ViewSwitcher並切換onClick佈局。另一種選擇是使用主佈局開始一個新的活動onClick,不管你做什麼,在這種情況下不要多次設置ContentContentView。

1

使用此加載MainActivity:

View.OnClickListener welcomeListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(YourCurrentActivity.this, MainActivity.class); 
      startActivity(intent); 
     } 
    }; 
    btn.setOnClickListener(welcomeListener); 
    } 
+0

是的,我改變了它,它的工作原理 – Programmer

+0

如果此答案有助於您將其標記爲已接受。 :) – tahsinRupam

0

正如前面提到的,最好使用意向屏幕間切換。 與歡迎的活動開始,然後運行下一個的onClick:

Intent intent = new Intent(this, MainActivity.class); 
startActivity(intent); 

此外,您還可以嘗試使用片段用於這一目的。但更好的練習 - 只需將你的閃屏放在FrameLayout的主要活動佈局中,然後將其設置爲setVisibility(Visibility.GONE) onClick。

+0

好吧,我會的,謝謝 – Programmer

1

試試這個 -

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getIntent()!=null){ 
      if (getIntent().getBooleanExtra("REFRESH",false)){ 
       setContentView(R.layout.activity_main); 
      } else{ 
       setContentView(R.layout.activity_welcom); 
      } 
     }else{ 
      setContentView(R.layout.activity_welcom); 
     } 

     Button btn = (Button) findViewById(R.id.button); 
     View.OnClickListener welcomeListener = new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent mIntent = new Intent(this,CurrentClass.class); 
       mIntent.putExtra("REFRESH",true); 
       startActivity(mIntent); 
      } 
     }; 
     btn.setOnClickListener(welcomeListener); 
    } 
1

在一項活動中添加多個佈局的最佳選擇是在您的活動中使用fragmets,從而提供更好的性能。 setContentView不是一種優先的方式,它只能在你的Activity中使用一次。閱讀這篇文檔,你會得到一切更好地瞭解你需要做的:enter link description here

相關問題