簡體   English   中英

新活動未在 Android 應用中啟動

[英]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那么只需將Intentcontext替換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM