[英]New activity not starting in Android app
我正在嘗試在單擊按鈕時開始一項新活動。 我在我的應用程序的各個地方都這樣做。 1st 當用戶登錄系統時。 我正在使用以下代碼打開新活動:
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
if (etUserName.getText().length() != 0 && etPassword.getText().toString() != "") {
//code to check login is correct or not
Context ctx = v.getContext();
Intent intent = new Intent(ctx, DashboardActivity.class);
ctx.startActivity(intent);
} else {
// tv.setText("Please enter name");
}
}
});
這工作正常並且 DashboardActivity 已打開。 在這個新屏幕上,我有三個按鈕,單擊每個按鈕會啟動一個新活動。其中一個按鈕的代碼如下:
btnMyActivity = (Button) findViewById(R.id.btnMyActivity);
btnFarmerStatus = (Button) findViewById(R.id.btnFarmerStatus);
btnMeetings = (Button) findViewById(R.id.btnMeetings);
btnMyActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
Context ctx = v.getContext();
Intent intent = new Intent(v.getContext(), MyactivityActivity.class);
ctx.startActivity(intent);
}
});
清單 xml 是這樣的:
<activity android:name=".DashboardActivity" android:screenOrientation="portrait" />
<activity android:name=".MyactivityActivity" android:screenOrientation="portrait" />
<activity android:name=".FarmerstatusActivity" android:screenOrientation="portrait" />
不知何故,代碼是相同的,但第二次新活動沒有打開。 事實上,屏幕上什么也沒有發生。 我的代碼有什么問題?
更新:當 DashboardActivity 打開 logcat 時顯示:
08-05 15:33:04.880 3073-3073/com.it.allied.ots_dashboard I/Choreographer:跳過了 55 幀! 應用程序可能在其主線程上做了太多工作。 08-05 15:33:05.279 3073-3138/com.it.allied.ots_dashboard E/Surface:getSlotFromBufferLocked:未知緩沖區:0xabda5950
這是來自 Myactivityactivity 類的代碼
public class MyactivityActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_myactivity);
}
@Override
protected void onStart() {
super.onStart();
setContentView(R.layout.activity_myactivity);
}
}
btnMyActivity = (Button) findViewById(R.id.btnMyActivity);
btnFarmerStatus = (Button) findViewById(R.id.btnFarmerStatus);
btnMeetings = (Button) findViewById(R.id.btnMeetings);
btnMyActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
Intent intent = new Intent(context, MyactivityActivity.class);
startActivity(intent);
}
});
我想這會幫助你。試試這個。
似乎這里的其他答案對您沒有幫助。 試試這個:
創建 Intent 的另一種方法是使用 AndroidManifest.xml 文件。
步驟:
1) 打開AndroidManifest.xml
文件並移動到:
<activity android:name=".MyactivityActivity"> </activity>
2)現在使用這樣的意圖過濾器標簽:
<activity android:name=".MyactivityActivity">
<intent-filter>
</intent-filter>
</activity>
3)更改動作名稱,例如:
<action android:name="AnythingOfYourChoice" />
(但沒有空格)寫動作名稱的理想方式是這樣的:
<action android:name="packagename.ActivityName" />
4)更改類別名稱,例如:
<category android:name="android.intent.category.DEFAULT" />
5)然后使用隱式意圖
Intent i = new Intent("packagename.ActivityName");
startActivity(i);
這可能會解決您的問題。
第一個解決方案:定義Context context;
在您的活動和context = this;
在您的活動的 onCreate() 方法中。
btnMyActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(context, MyactivityActivity.class);
startActivity(intent);
}
});
並且
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
if (etUserName.getText().length() != 0 && !(etPassword.getText().toString().equals(""))) {
//code to check login is correct or not
Intent intent = new Intent(context, DashboardActivity.class);
startActivity(intent);
} else {
// tv.setText("Please enter name");
}
}
});
第二種解決方案:如果您不想使用context
那么只需將Intent
的context
替換為yourActivity.this
。
Intent intent = new Intent(MyactivityActivity.this, DashboardActivity.class);
startActivity(intent);
我想你檢查一下
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (etUserName.getText().length() != 0 && !(etPassword.getText().toString().equals(""))) {
Context ctx = v.getContext();
Intent intent = new Intent(ctx, DashboardActivity.class);
ctx.startActivity(intent);
} else {
// tv.setText("Please enter name");
}
}
});
我看起來像是 Android 6.0 的問題。 我正在嘗試更新 android 模擬器,但它不起作用。 我正在為 android 模擬器問題啟動一個新線程。
我有完全相同的問題。 我發現我在xml文件中編寫了ListView而不是LinearLayout。 始終檢查您在 xml 中使用的布局,問題僅存在於此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.